Загрузил Serge Dobridnyuk

Руководство по эксплуатации платформ Platform V Sber Linux OS Server SLO 0331c386e8

реклама
АО «СберТех» (является дочерним обществом ПАО Сбербанк)
117105, Москва, Новоданиловская наб., д. 10
Продукт Platform V SberLinux OS Server
(SLO)
Компонент «Операционная система» (INST)
Руководство по эксплуатации
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Содержание
Руководство по системному администрированию продукта Platform V SberLinux OS
Server (SLO) ........................................................................................................... 3
Сценарии администрирования ........................................................................................ 3
Сценарии администрирования root администратора ............................................... 3
Руководство пользователя без привилегий и администратора без привилегии root
.................................................................................................................................... 483
События системного журнала ..................................................................................... 513
Служба Rsyslog в SberLinux......................................................................................... 514
Аудит системы с помощью auditd ............................................................................ 519
События мониторинга ................................................................................................. 520
Обзор вариантов мониторинга производительности ........................................... 520
Часто встречающиеся проблемы и пути их устранения ........................................... 522
Понимание процедуры загрузки ................................................................................ 522
Устранение неполадок .............................................................................................. 524
Передача аргументов в GRUB 2 ядру во время загрузки.......................................... 525
Переустановка GRUB 2 .............................................................................................. 527
Исправление Initramfs ................................................................................................ 527
Восстановление после проблем с файловой системой ........................................... 527
2
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Руководство по системному администрированию
продукта Platform V SberLinux OS Server (SLO)
Сценарии администрирования
Примечание: Все предложенные сценарии работы SberLinux опциональны и
используются на усмотрение пользователя; реализация тех или иных сценариев
работы SberLinux зависит от того, с каким программно-аппаратным обеспечением
работает пользователь.
Сценарии администрирования root администратора
Настройка основных параметров системы
В этом разделе описываются основы системного администрирования в Platform V
SberLinux OS Server (далее - SberLinux). Основное внимание уделяется задачам,
которые системный администратор должен выполнить сразу после успешной
установки операционной системы:
•
•
•
•
•
установка программного обеспечения с помощью yum;
использование systemd для управления службами;
управление пользователями, группами и правами доступа к файлам;
использование chrony для настройки NTP;
работа с Python 3 и другие.
Изменение основных параметров среды
Настройка основных параметров среды является частью процесса установки.
Данный раздел описывает как изменить их позже. В базовую конфигурацию среды
входят:
•
•
•
•
дата и время;
локали системы;
раскладка клавиатуры;
язык.
Настройка даты и времени
Точный хронометраж важен по ряду причин. Хронометраж обеспечивается NTP
протоколом, который реализуется демоном, работающим в пользовательском
пространстве. Демон пользовательского пространства обновляет системные часы,
работающие в ядре. Системные часы могут показывать время, используя различные
источники синхронизации.
3
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
SberLinux использует chronyd демон для реализации NTP. chronyd доступен в пакете
chrony.
Отображение текущей даты и времени
Чтобы отобразить текущую дату и время, выполните любой из этих шагов.
Процедура:
1.
Введите date команду:
$ date
Mon Mar 30 16:02:59 CEST 2020
2.
Чтобы увидеть более подробную информацию, используйте timedatectl команду:
$ timedatectl
Local time: Mon 2020-03-30 16:04:42 CEST
Universal time: Mon 2020-03-30 14:04:42 UTC
RTC time: Mon 2020-03-30 14:04:41
Time zone: Europe/Prague (CEST, +0200)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Смена часового пояса
$ timedatectl set-timezone "Europe/Moscow"
Смена времени
$ timedatectl set-time 15:58:30
Настройка локали системы
Общесистемные настройки локали хранятся в файле /etc/locale.conf, который
считывается при ранней загрузке демоном systemd. Каждая служба или пользователь
наследует настройки локали, настроенные в /etc/locale.conf, если только отдельные
программы или отдельные пользователи не переопределяют их.
В этом разделе описывается, как управлять языковым стандартом системы.
Процедура:
4
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
Чтобы вывести список доступных языковых настроек системы:
$ localectl list-locales
C.utf8
aa_DJ
aa_DJ.iso88591
aa_DJ.utf8
...
•
Чтобы отобразить текущий статус настроек системных локалей:
$ localectl status
•
Чтобы установить или изменить настройки локали системы по умолчанию,
используйте localectl set-locale подкоманду от имени root пользователя.
Например:
## localectl set-locale LANG=en_US
Дополнительные ресурсы:
man localectl(1), man locale(7), и man locale.conf(5)
Настройка раскладки клавиатуры
Настройки раскладки клавиатуры управляют раскладкой, используемой в текстовой
консоли и графическом пользовательском интерфейсе.
Процедура:
•
Получите список доступных раскладок:
$ localectl list-keymaps
ANSI-dvorak
al
al-plisi
amiga-de
amiga-us
...
•
Отобразите текущий статус настроек раскладки клавиатуры:
$ localectl status
...
5
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
VC Keymap: us
...
•
Установите или измените системную раскладку по умолчанию, например:
## localectl set-keymap us
Дополнительные ресурсы:
man localectl(1), man locale(7), и man locale.conf(5)
Средства антивирусной защиты
SberLinux не предоставляет антивирусного программного обеспечения. Необходимое
программное обеспечение пользователь устанавливает самостоятельно.
SberLinux обеспечивает высокий уровень безопасности операционной системы и
пакетов. По мере обнаружения проблем с безопасностью в различных приложениях
SberLinux предоставляет обновленные пакеты таким образом, чтобы свести
потенциальный риск к минимуму.
Настройка и управление сетевым доступом
В этом разделе описываются различные варианты добавления соединений Ethernet.
Настройка сети и имени хоста в графическом режиме установки
1.
В окне Installation Summary нажмите [Network and Host Name].
2.
В списке на левой панели выберите интерфейс. Детали отображаются на
правой панели.
3.
Переключите переключатель ВКЛ/ВЫКЛ, чтобы включить или отключить
выбранный интерфейс.
Примечание: Программа установки автоматически определяет локально доступные
интерфейсы, их нельзя добавить или удалить вручную.
Нажмите “+”, чтобы добавить виртуальный сетевой интерфейс, который может
быть: Team, Bond, Bridge или VLAN. Нажмите “-” для удаления виртуального
интерфейса. Нажмите Configure, чтобы изменить такие параметры, как IP-адреса,
DNS-серверы или конфигурацию маршрутизации для существующего интерфейса (как
виртуального, так и физического). Введите имя хоста для системы в поле Host Name.
Примечание: Имя хоста может быть либо полным доменным именем (FQDN) в формате
hostname.domainname, либо коротким именем хоста без имени домена. Во многих
сетях есть служба протокола динамической конфигурации хоста (DHCP), которая
автоматически предоставляет подключенным системам доменное имя. Чтобы
6
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
разрешить службе DHCP назначить доменное имя этому компьютеру, укажите только
короткое имя хоста. Это значение localhost означает, что конкретное статическое
имя хоста для целевой системы не настроено, а фактическое имя хоста
установленной системы настраивается во время обработки конфигурации сети,
например, с NetworkManager помощью DHCP или DNS.
•
•
Имена хостов могут содержать только буквенно-цифровые символы и “-” или
“.”. Имена хостов не могут начинаться или заканчиваться символами “-” и “.”.
Нажмите Apply, чтобы применить имя хоста к среде установщика.
Кроме того, в окне Network and Hostname существует возможность выбрать
параметр Wireless option. Для этого нажмите Select network на правой панели,
чтобы выбрать подключение Wi-Fi, при необходимости введите пароль и
нажмите Done.
Настройка статического соединения Ethernet с помощью утилиты nmcli
Эта процедура описывает добавление соединения Ethernet со следующими
настройками (и примерами параметров) с помощью утилиты nmcli:
•
•
•
•
•
•
•
Статический адрес IPv4 — 192.0.2.1 с /24 маской подсети
Статический адрес IPv6 — 2001:db8:1::1 с /64 маской подсети
Шлюз IPv4 по умолчанию — 192.0.2.254
Шлюз IPv6 по умолчанию — 2001:db8:1::fffe
DNS-сервер IPv4 — 192.0.2.200
DNS-сервер IPv6 — 2001:db8:1:ffbb
Домен поиска DNS — example.ru
Процедура:
1.
Добавьте новый профиль подключения NetworkManager для подключения
Ethernet:
## nmcli connection **Add** con-name Example-Connection ifname enp7s0 type ethernet
2.
Дальнейшие шаги изменяют созданный профиль подключения ExampleConnection.
3.
Установите IPv4-адрес:
## nmcli connection modify Example-Connection ipv4.addresses 192.0.2.1/24
4.
Установите IPv6-адрес:
## nmcli connection modify Example-Connection ipv6.addresses 2001:db8:1::1/64
7
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
5.
Установите способ подключения IPv4 и IPv6 manual:
## nmcli connection modify Example-Connection ipv4.method manual
6.
Установите шлюзы IPv4 и IPv6 по умолчанию:
## nmcli connection modify Example-Connection ipv4.gateway 192.0.2.254
## nmcli connection modify Example-Connection ipv6.gateway 2001:db8:1::fffe
7.
Задайте адреса DNS-серверов IPv4 и IPv6:
## nmcli connection modify Example-Connection ipv4.dns "192.0.2.200"
## nmcli connection modify Example-Connection ipv6.dns "2001:db8:1::ffbb"
Чтобы задать несколько DNS-серверов, укажите их через пробел и заключите в
кавычки.
8.
Установите домен поиска DNS для соединения IPv4 и IPv6:
## nmcli connection modify Example-Connection ipv4.dns-search example.ru
## nmcli connection modify Example-Connection ipv6.dns-search example.ru
9.
Активируйте профиль подключения:
## nmcli connection up Example-Connectio
Connection successfully activated (D-Bus active path:
/org/freedesktop/NetworkManager/ActiveConnection/13)
Этапы проверки:
1.
Отображение состояния устройств и подключений:
## nmcli device status
DEVICE TYPE STATE CONNECTION
enp7s0 ethernet connected Example-Connection
2.
Чтобы отобразить все настройки профиля подключения:
## nmcli connection show Example-Connection
connection.id: Example-Connection
connection.uuid: b6cdfa1c-e4ad-46e5-af8b-a75f06b79f76
connection.stable-id: -8
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
connection.type: 802-3-ethernet
connection.interface-name: enp7s0
...
3.
Используйте ping утилиту, чтобы убедиться, что этот хост может
отправлять пакеты другим хостам.
Пропингуйте IP-адрес в той же подсети.
Для IPv4:
## ping 192.0.2.3
•
Для IPv6:
## ping 2001:db8:1::2
Если команда не удалась, проверьте параметры IP и подсети.
•
Пропингуйте IP-адрес в удаленной подсети. Для IPv4:
## ping 198.162.3.1
•
Для IPv6:
## ping 2001:db8:2::1
•
Если команда не удалась, пропингуйте шлюз по умолчанию, чтобы проверить
настройки. Для IPv4:
## ping 192.0.2.254
Для IPv6:
## ping 2001:db8:1::fff3
4.
Используйте host утилиту, чтобы убедиться, что разрешение имен работает.
Например:
## host client.example.ru
9
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Если команда возвращает какую-либо ошибку, например connection timed out или no
servers could be reached, проверьте настройки DNS.
Действия по устранению неполадок
1.
•
•
•
Если соединение не установлено или сетевой интерфейс переключается между
состояниями вверх и вниз:
Убедитесь, что сетевой кабель подключен к хосту и коммутатору.
Проверьте, существует ли сбой связи только на этом хосте или также на
других хостах, подключенных к тому же коммутатору, к которому подключен
сервер.
Убедитесь, что сетевой кабель и сетевой интерфейс работают должным
образом. Выполните действия по диагностике оборудования и замените
неисправные кабели и сетевые карты.
Дополнительные ресурсы:
Справочные страницы: nm-settings(5), nmcli и nmcli(1).
Настройка динамического соединения Ethernet с помощью nmtui
Данная утилита представляет собой текстовый пользовательский интерфейс и
может использоваться для настройки и конфигурирования. Используйте nmtui для
настройки соединения Ethernet с динамическим IP-адресом на хосте без графического
интерфейса.
Процедура:
1.
Если имя сетевого устройства, которое хотите использовать в соединении,
неизвестно, отобразите доступные устройства:
## nmcli device status
DEVICE TYPE STATE
CONNECTION
enp7s0 ethernet unavailable
-...
2.
Введите nmtui:
## nmtui
3.
Выберите Edit a connection и нажмите Enter.
4.
Нажмите кнопку Add.
5.
Выберите Ethernet из списка типов сети и нажмите Enter.
6.
При необходимости введите имя создаваемого профиля NetworkManager.
10
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
7.
Введите имя сетевого устройства в Device поле.
Нажмите OK кнопку, чтобы создать и автоматически активировать новое
соединение.
Рисунок. Новое соединение
8.
Нажмите Back кнопку, чтобы вернуться в главное меню.
9.
Выберите Quit и нажмите Enter , чтобы закрыть nmtui приложение.
Проверка:
1.
Отображение состояния устройств и подключений:
## nmcli device status
DEVICE TYPE STATE CONNECTION
enp7s0 ethernet connected Example-Connection
2.
Показать все настройки профиля подключения:
## nmcli connection show Example-Connection
connection.id: Example-Connection
connection.uuid: b6cdfa1c-e4ad-46e5-af8b-a75f06b79f76
connection.stable-id: -connection.type: 802-3-ethernet
connection.interface-name: enp7s0
...
Настройка статического соединения Ethernet с помощью nmtui
Приложение nmtui предоставляет текстовый пользовательский интерфейс для
NetworkManager. Используйте nmtui для настройки соединения Ethernet со
статическим IP-адресом на хосте без графического интерфейса.
11
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Процедура:
1.
Если имя сетевого устройства, которое хотите использовать в соединении,
неизвестно, отобразите доступные устройства:
## nmcli device status
DEVICE TYPE STATE
CONNECTION
enp7s0 ethernet unavailable
-...
2.
Начало nmtui:
## nmtui
1.
Выберите Edit a connection и нажмите Enter.
2.
Нажмите Add кнопку.
3.
Выберите Ethernet из списка типов сети и нажмите Enter.
4.
Необязательно: введите имя создаваемого профиля NetworkManager.
5.
Введите имя сетевого устройства в Device поле.
6.
Настройте параметры адресов IPv4 и IPv6 в областях IPv4 configuration и IPv6
configuration:
•
•
Нажмите Automatic кнопку и выберите Manual из отображаемого списка.
Нажмите Show кнопку рядом с протоколом, чтобы отобразить дополнительные
поля.
Нажмите Add кнопку рядом с Addresses и введите IP-адрес и маску подсети в
формате бесклассовой междоменной маршрутизации (CIDR). Если маска подсети
не указана, NetworkManager установит /32 маску подсети для адресов IPv4 и /64
для адресов IPv6.
Введите адрес шлюза по умолчанию.
Нажмите Add кнопку рядом с DNS servers и введите адрес DNS-сервера.
Нажмите Add кнопку рядом с Search domains и введите домен поиска DNS.
•
•
•
•
12
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Рисунок. Пример соединения Ethernet со статическими настройками IP-адреса
1.
Нажмите OK кнопку, чтобы создать и автоматически активировать новое
соединение.
2.
Нажмите Back кнопку, чтобы вернуться в главное меню.
3.
Выберите Quit и нажмите Enter, чтобы закрыть nmtui приложение.
13
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Проверка:
1.
Отобразятся состояния устройств и подключений:
## nmcli device status
DEVICE TYPE STATE CONNECTION
enp7s0 ethernet connected Example-Connection
2.
Отобразятся все настройки профиля подключения:
## nmcli connection show Example-Connection
connection.id:
Example-Connection
connection.uuid:
b6cdfa1c-e4ad-46e5-af8b-a75f06b79f76
connection.stable-id: -connection.type:
802-3-ethernet
connection.interface-name: enp7s0
...
Дополнительные ресурсы:
Справочные страницы: nm-settings(5), nmcli и nmcli(1).
Управление сетью в веб-консоли SberLinux
В веб-консоли меню Network позволяет:
•
•
•
•
отобразить текущие полученные и отправленные пакеты;
отобразить наиболее важные характеристики доступных сетевых
интерфейсов;
отобразить содержимое сетевых журналов;
добавить различные типы сетевых интерфейсов (bond, team, bridge, VLAN).
Управление сетью с помощью системных ролей SberLinux
network - с помощью этой роли можно настроить сетевые подключения на нескольких
целевых машинах.
Роль network позволяет настраивать следующие типы интерфейсов:
•
•
•
•
•
•
Ethernet;
Bridge;
Bonded;
VLAN;
MacVLAN;
Infiniband.
14
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Необходимые сетевые подключения для каждого хоста представлены в виде списка
внутри network_connections переменной.
Предупреждение: Роль network обновляет или создает все профили подключения в
целевой системе точно так, как указано в network_connections переменной. Поэтому
network роль удаляет параметры из указанных профилей, если параметры
присутствуют только в системе, но не в network_connections переменной.
В следующем примере показано, как применить роль, чтобы убедиться, что
соединение Ethernet с требуемыми параметрами существует:
Пример playbook, применяющего сетевую роль для настройки Ethernet-соединения с
требуемыми параметрами.
## SPDX-License-Identifier: BSD-3-Clause
--- hosts: network-test
vars:
network_connections:
# Create one ethernet profile and activate it.
# The profile uses automatic IP addressing
# and is tied to the interface by MAC address.
- name: prod1
state: up
type: ethernet
autoconnect: yes
mac: "00:00:5e:00:53:00"
mtu: 1450
roles:
- sberlinux-system-roles.network
Запуск служб systemd во время загрузки
Как системный администратор, определите, каким образом службы запускаются в
системе. Для управления службами используйте systemctl утилиту командной строки
для управления systemd системой и диспетчером служб или веб-консоль.
Включение или отключение служб
Как системный администратор включите или отключите запуск службы при
загрузке, и эти изменения применятся после перезагрузки. Для автоматического
запуска службы при загрузке, включите эту службу. Если служба отключена, она не
будет запускаться при загрузке, но существует возможность запустить ее вручную.
15
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Замаскируйте службу, чтобы ее нельзя было запустить вручную. Маскировка — это
способ отключения службы, который сделает ее не доступной для использования,
пока не будет задействована команда unmask, которая сделает службу снова
доступной.
Предварительные условия:
•
•
Права root пользователя.
Служба, которую хотите включить, не должна быть замаскирована. Если есть
замаскированный сервис, необходимо сначала размаскировать его:
## systemctl unmask service_name
Процедура:
1.
Включите запуск службы при загрузке:
## systemctl enable service_name
2.
Замените service_name на службу, которую хотите включить.
Также можно включить и запустить службу с помощью одной команды:
## systemctl enable --now service_name
3.
Отключите запуск службы при загрузке:
## systemctl disable service_name
Замените service_name на службу, которую хотите отключить.
Замаскируйте службу, чтобы сделать службу непригодной для использования
навсегда:
## systemctl mask service_name
Управление службами в веб-консоли SberLinux
Можно включить или отключить службу при загрузке с помощью веб-консоли. В вебконсоли можно проверить статус службы, запустить или остановить службы, или
замаскировать их.
Предварительные условия:
16
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
Права root пользователя.
Веб-консоль установлена и включена.
Процедура:
1.
Откройте localhost:9090 в веб-браузере на выбор.
2.
Убедитесь, что обладаете правами root пользователя.
3.
Чтобы отобразить панель веб-консоли, нажмите значок Host в левом верхнем
углу окна.
Рисунок. Панель веб-консоли
4.
В меню выберите Services.
5.
Управляйте системными целями, службами, сокетами, таймерами и путями.
Например, для управления службой NFS client services:
•
•
•
•
Нажмите Targets.
Выберите службу NFS client services.
Чтобы включить или отключить службу, нажмите кнопку Toogle.
Чтобы остановить службу, нажмите кнопку ⫶ и выберите опцию Stop.
17
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Рисунок. Управление службой NFS client services
Настройка безопасности системы
Компьютерная безопасность — это защита компьютерных систем и их аппаратного
обеспечения, программного обеспечения, информации и услуг от кражи, повреждения,
нарушения работы и неправильного направления. Обеспечение компьютерной
безопасности является важной задачей, особенно на предприятиях, которые
обрабатывают конфиденциальные данные и осуществляют бизнес-транзакции.
В этом разделе рассматриваются только основные функции безопасности, которые
можно настроить после установки операционной системы.
Включение службы межсетевого экрана firewalld
Межсетевой экран — это система сетевой безопасности, которая отслеживает и
контролирует входящий и исходящий сетевой трафик в соответствии с
настроенными правилами безопасности. Межсетевой экран обычно устанавливает
барьер между надежной защищенной внутренней сетью и другой внешней сетью.
Служба firewalld, обеспечивающая межсетевой экран в SberLinux, автоматически
включается во время установки.
Чтобы включить firewalld службу, выполните следующую процедуру.
18
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Процедура:
•
Отображение текущего состояния firewalld:
$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
...
•
Если firewalld не включен и не запущен, переключитесь на root-пользователя,
запустите firewalld службу и включите ее автоматический запуск после
перезагрузки системы:
## systemctl enable --now firewalld
Этапы проверки:
•
Убедитесь, что firewalld запущен и включен:
$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running)
...
Настройка правил для межсетевого экрана firewalld
Общий синтаксис для работы с правилами
firewall-cmd [опции] [зона]
Порядок следования параметров не важен.
где:
[опции] — дополнительные параметры для создаваемого правила, например –
permanent — постоянное правило, то есть будет действовать после перезагрузки.
Не обязательный. [зона] — по умолчанию, правила создаются для зоны public. Для
работы с конкретной зоной ее необходимо указать, например, –zone=dmz. Не
обязательный. — само правило. Чтобы правила применить, перечитайте их:
19
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
firewall-cmd --reload
Чтобы добавить порты: Откройте порт 80:
firewall-cmd --permanent --add-port=80/tcp
•
где ключ –permanent — добавляет постоянное правило, которое будет
действовать после перезагрузки).
Чтобы добавить правило для определенной зоны:
1.
Пропишите:
firewall-cmd --permanent --zone=external --add-port=80/tcp
2.
Добавьте диапазон портов:
firewall-cmd --permanent --add-port=6500-6700/udp
3.
Добавьте несколько правил одной командой:
firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp
Добавление сервиса
Использование служб, вместо портов, может повысить удобство управления
правилами за счет объединения нескольких портов в одну службу.
1.
Посмотрите список доступных служб:
firewall-cmd --get-services
2.
Разрешите порт, например, для сервиса ntp:
firewall-cmd --permanent --add-service=ntp
3.
Создайте собственную службу:
firewall-cmd --permanent --new-service=name-service
Где name-service — это произвольное имя создаваемой службы.
20
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
4.
Добавьте порт, например TCP 2200 к службе:
firewall-cmd --permanent --service=name-service --add-port=2200/tcp
5.
Задайте описание для удобства:
firewall-cmd --permanent --service=name-service --set-short="Service With This Name"
firewall-cmd --permanent --service=name-service --set-description="Long Description For Service
With This Name"
Информацию о созданном сервисе можно получить командой:
firewall-cmd --info-service=name-service
Теперь созданную службу можно использовать для создания правил, например:
firewall-cmd --permanent --add-service=name-service
Правило Rich-Rule
Правило rich-rule позволяет создавать правила с условиями. Например:
1.
Разрешите службу http с условием, что запросы будут с определенных IPадресов (например, подсети 000.000.0):
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="000.000.0.0/24"
service name="http" accept'
2.
Или разрешите службу для конкретного порта:
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="000.000.0.0/24" port
port="5038" protocol="tcp" accept'
3.
Чтобы заблокировать подсеть, воспользуйтесь командой:
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='000.000.1.0/24'
reject"
Список правил с условиями отобразите командой:
21
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
firewall-cmd --list-rich-rules
Удаление правил
Аналогично созданию, но вместо add введите remove, например –remove-port
(удалить порт) или –remove-service (удалить службу).
Удалите правило для открытия 80-о порта:
firewall-cmd --permanent --remove-port=80/tcp
Управление зонами
Все правила в firewalld могут быть разбиты по зонам. Для каждой свой набор правил
и свои сетевые интерфейсы. Это нужно использовать, если необходимо для разных
сетевых адаптеров создать разные по строгости правила.
1.
Просмотрите список всех имеющихся зон:
firewall-cmd --list-all-zones
2.
Просмотрите список используемых зон:
firewall-cmd --get-active-zones
Информация о конкретной зоне
1.
Введите:
firewall-cmd --list-all --zone=public
2.
Создайте правило для зоны public:
firewall-cmd --permanent --zone=public --add-port=80/tcp
3.
Добавьте сетевой интерфейс в зону:
firewall-cmd --permanent --zone=public --remove-interface=ens34
firewall-cmd --permanent --zone=internal --add-interface=ens34
Перед этим необходимо удалить адаптер из текущей зоны.
22
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
4.
Задайте действие по умолчанию для зоны:
firewall-cmd --permanent --zone=public --set-target=DROP
5.
Создайте новую зону:
firewall-cmd --permanent --new-zone=custom_zone
firewall-cmd --reload
Примечание: Чтобы система увидела новую зону custom_zone, команда reload
обязательна.
Пример настройки NAT (шлюза)
1.
Включите masquerade:
firewall-cmd --permanent --zone=dmz --add-masquerade
Примечание: Без указания зон, masquerade будет включен для public и external.
Правило systemctl restart firewalld
Примечание: Для того, чтобы сервер заработал в качестве шлюза, также необходимо
настроить ядро.
Для просмотра созданных данным способом правил используйте команду:
firewall-cmd --direct --get-all-rules
Проброс портов
Проброс настраивается со следующим синтаксисом:
firewall-cmd –add-forward-port=port=:proto=tcp|udp|sctp|dccp:toport=:toaddr=
Например:
firewall-cmd --zone=external --permanent --add-forwardport=port=25:proto=tcp:toport=8025:toaddr=000.000.0.15
В примере выше осуществляются запросы на порту 25 и переводятся на узел
000.000.0.15 и порт 8025.
23
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Запретить или разрешить трафик между интерфейсами
Например, существуют два внутренних сетевых интерфейса ens35 и ens36, поэтому
необходимо контролировать трафик между ними.
Чтобы запретить трафик между интерфейсами:
Правило применяется в случаях, когда на сервере включен FORWARD, но необходимо
блокировать трафик между определенными сегментами сети.
Введите следующие команды:
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j DROP
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens36 -o ens35 -j DROP
Чтобы разрешить трафик между интерфейсами:
Правило применяется в случаях, когда интерфейсы находятся в зонах, где по
умолчанию, трафик блокируется.
Введите следующие команды:
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j ACCEPT
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens36 -o ens35 -j ACCEPT
Чтобы разрешить трафик в одном направлении: Если необходимо сделать так,
чтобы только сеть ens35 видела сеть ens36, вводите одну команду:
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j ACCEPT
Возможные проблемы при работе с firewalld
1.
Ошибка command not found (команда не найдена).
Возможные причины: не установлен пакет или не запущена служба.
Выполните установку пакета firewalld:
yum install firewalld firewall-config
Запустите службу:
24
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
systemctl start firewalld
2.
Не применяются правила.
Причина: не введена команда перезапуска правил.
Перечитайте правила:
firewall-cmd --reload
Перезапустите систему со сбросом подключений:
firewall-cmd --complete-reload
Или перезапустите сетевые службы:
systemctl restart network
Перезагрузите машину:
shutdown -r now
Управление межсетевым экраном в веб-консоли
Чтобы настроить firewalld службу в веб-консоли, перейдите в Networking → Firewall
(межсетевой экран).
По умолчанию firewalld служба включена.
Процедура:
1.
Чтобы включить или отключить firewalld в веб-консоли, переключите
переключатель межсетевого экрана.
25
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Рисунок. Переключатель межсетевого экрана
Примечание: Существует возможность определить более детальный доступ через
межсетевой экран к службе с помощью кнопки Add services….
Управление основными настройками SELinux
Security-Enhanced Linux (SELinux) — это дополнительный уровень безопасности
системы, определяющий, какие процессы могут получать доступ к тем или иным
файлам, каталогам и портам. Эти разрешения определены в политиках SELinux.
Политика — это набор правил, которыми руководствуется механизм безопасности
SELinux.
SELinux имеет два возможных состояния:
1 Включено. 2 Выключено.
Когда SELinux включен, он работает в одном из следующих режимов:
•
Включен:
–
–
Принудительный
Разрешающий
В принудительном режиме SELinux применяет загруженные политики. SELinux
запрещает доступ на основе правил политики SELinux и разрешает только явно
разрешенные взаимодействия. Принудительный режим является самым безопасным
режимом SELinux и является режимом по умолчанию после установки.
В разрешающем режиме SELinux не применяет загруженные политики. SELinux не
запрещает доступ, но сообщает о действиях, нарушающих правила, в
/var/log/audit/audit.log журнал. Разрешающий режим является режимом по умолчанию
во время установки. Разрешающий режим также полезен в некоторых специфических
случаях, например, при устранении неполадок.
Обеспечение требуемого состояния SElinux
По умолчанию SELinux работает в принудительном режиме. Однако в определенных
сценариях можно установить для SELinux разрешающий режим или даже отключить
его.
Примечание: Рекомендуем поддерживать систему в принудительном режиме. В целях
отладки установите SELinux в разрешающий режим.
Следуйте этой процедуре, чтобы изменить состояние и режим SELinux в системе.
Процедура
1.
Отобразите текущий режим SELinux:
26
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
$ getenforce
2.
•
Чтобы временно установить SELinux:
Для принудительного режима:
## setenforce
•
Для разрешительного режима:
## setenforce Permissive
Примечание: После перезагрузки режим SELinux устанавливается на значение,
указанное в /etc/selinux/config файле конфигурации.
Настройка политики для SELinux, функционирующего в принудительном режиме
В следующих разделах описываются файлы конфигурации и политики SELinux, а также
связанные файловые системы, расположенные в /etc/ каталоге.
Конфигурационный файл /etc/sysconfig/selinux
Существует два способа настроить SELinux в SberLinux: с помощью средства
настройки уровня безопасности (system-config-securitylevel) или вручную
отредактировав файл конфигурации (/etc/sysconfig/selinux).
Этот /etc/sysconfig/selinux файл является основным конфигурационным файлом для
включения или отключения SELinux, а также для настройки того, какую политику
применять в системе и как ее применять.
Примечание: Файл /etc/sysconfig/selinux содержит символическую ссылку на
фактический файл конфигурации /etc/selinux/config.
Ниже объясняется полное подмножество параметров, доступных для настройки:
•
•
•
SELINUX=<enforcing|permissive|disabled> — Определяет состояние SELinux
верхнего уровня в системе.
enforcing — Политика безопасности SELinux применяется принудительно.
permissive — Система SELinux выводит предупреждения, но не применяет
политику. Это полезно для целей отладки и устранения неполадок. В
разрешающем режиме будет регистрироваться больше отказов, так как
субъекты смогут продолжить действия, в противном случае запрещенные в
принудительном режиме. Например, обход дерева каталогов приведет к
появлению нескольких avc: denied сообщений для каждого прочитанного уровня
каталога, где ядро в принудительном режиме остановило бы начальный обход и
предотвратило появление дальнейших сообщений об отказе.
27
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
disabled — SELinux полностью отключен. Перехваты SELinux отключаются от
ядра, а псевдофайловая система не регистрируется.
Примечание: Действия, выполняемые при отключенном SELinux, могут привести к
тому, что файловая система больше не будет иметь надлежащего контекста
безопасности, определенного политикой. Запуск fixfiles relabel перед включением
SELinux приведет к переименованию файловой системы, чтобы SELinux работал
правильно при включении. Для получения дополнительной информации обратитесь к
fixfiles(8) справочной странице. Дополнительные пробелы в конце строки
конфигурации или в виде дополнительных строк в конце файла могут привести к
неожиданному поведению. На всякий случай удалите ненужные пробелы.
•
•
SELINUXTYPE=<targeted|strict> — Указывает, какая политика в данный момент
применяется SELinux.
targeted — Защищены только целевые сетевые демоны.
Примечание: Следующие демоны защищены целевой политикой по умолчанию: dhcpd,
httpd, named, nscd, ntpd, portmap, snmpd, squid, и syslogd. Остальная часть системы
работает в unconfined_t домене.
Файлы политик для этих демонов можно найти в файле
/etc/selinux/targeted/src/policy/domains/program.
Принудительное применение политики для этих демонов можно включить или
выключить, используя логические значения, управляемые средством настройки уровня
безопасности (system-config-securitylevel). Переключение логического значения для
целевого демона отключает переход политики для демона, который предотвращает,
например, init переход dhcpd из unconfined_t домена в домен, указанный в dhcpd. Домен
unconfined_t позволяет субъектам и объектам с этим контекстом безопасности
работать под стандартной защитой SberLinux.
strict — Полная защита SELinux для всех демонов. Контексты безопасности
определяются для всех субъектов и объектов, и каждое отдельное действие
обрабатывается сервером принудительного применения политики.
Каталог /etc/selinux/
Каталог /etc/selinux/ является основным местом расположения всех файлов политики,
а также основного файла конфигурации. В следующем примере показано примерное
содержимое /etc/selinux/каталога:
-rw-r--r-- 1 root root 448 Sep 22 17:34 config
drwxr-xr-x 5 root root 4096 Sep 22 17:27 strict
drwxr-xr-x 5 root root 4096 Sep 22 17:28 targeted
28
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Два подкаталога, strict/ и targeted/, являются конкретными каталогами, в которых
содержатся файлы политики с одинаковыми именами (strict и targeted). Для получения
дополнительной информации о политике SELinux и конфигурации политики
обратитесь к rhel-selg.
3.
Чтобы режим SELinux сохранялся при перезагрузке, измените SELINUX
переменную в /etc/selinux/config файле конфигурации.
Например, чтобы переключить SELinux в принудительный режим:
## This file controls the state of SELinux on the system.
## SELINUX= can take one of these three values:
## enforcing - SELinux security policy is enforced.
## permissive - SELinux prints warnings instead of enforcing.
## disabled - No SELinux policy is loaded.
SELINUX=enforcing
...
Предупреждение: Отключение SELinux снижает безопасность системы. Избегайте
отключения SELinux с помощью SELINUX=disabled параметра в /etc/selinux/config
файле, поскольку это может привести к утечке памяти и состояниям гонки (race
condition), когда задействовано несколько инструкций процессора, вызывающих Kernel
panic (критическую ошибку ядра). Вместо этого отключите SELinux, добавив selinux=0
параметр в командную строку ядра.
Переключение режимов SELinux в веб-консоли
Можно установить режим SELinux через веб-консоль SberLinux в пункте меню SELinux .
По умолчанию принудительная политика SELinux в веб-консоли включена, и SELinux
работает в принудительном режиме. Отключив его, переключите SELinux в
разрешающий режим. Обратите внимание, что этот выбор автоматически
возвращается при следующей загрузке к конфигурации, определенной в
/etc/sysconfig/selinux файле.
Процедура:
1.
В веб-консоли используйте кнопку-переключатель Enforce policy в пункте меню
SELinux, чтобы включить или отключить принудительную политику SELinux.
29
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Рисунок. Кнопка-переключатель
Начало работы с управлением учетными записями пользователей
Управление учетными записями и группами с помощью инструментов командной
строки
Каждому пользователю присваивается уникальный числовой идентификационный
номер, называемый идентификатором пользователя (UID). Аналогично, каждая группа
связана с идентификатором группы (GID). Пользователь, создающий файл, также
является владельцем и владельцем группы этого файла. Файлу назначаются
отдельные разрешения на чтение, запись и выполнение для владельца, группы и всех
остальных. Владелец файла может быть изменен только root пользователем, а права
доступа могут быть изменены как root пользователем, так и владельцем файла.
SberLinux резервирует идентификаторы пользователей и групп ниже 1000 для
системных пользователей и групп. По умолчанию Диспетчер пользователей не
отображает системных пользователей. Зарезервированные идентификаторы
пользователей и групп документируются в пакете установки. Чтобы просмотреть
документацию, используйте эту команду:
cat /usr/share/doc/setup*/uidgid
Рекомендуемая практика - назначать идентификаторы, начинающиеся с 5000,
которые еще не были зарезервированы, поскольку зарезервированный диапазон
может увеличиться в будущем. Чтобы идентификаторы, назначаемые новым
пользователям по умолчанию, начинались с 5000, измените директивы UID_MIN и
GID_MIN в файле: /etc/login.defs, как представлено на примере:
30
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
[file contents truncated]
UID_MIN 5000
[file contents truncated]
GID_MIN 5000 >[file contents truncated]
Примечание: для пользователей, созданных до изменения UID_MIN GID_MIN директив,
идентификаторы UID по-прежнему будут начинаться со значения по умолчанию 1000.
Даже с новыми идентификаторами пользователей и групп, начинающимися с 5000,
рекомендуется не повышать зарезервированные системой идентификаторы выше
1000, чтобы избежать конфликта с системами, которые сохраняют ограничение в
1000.
Список всех групп хранится в конфигурационный файл /etc/group.
Теневые пароли
В средах с несколькими пользователями очень важно использовать теневые пароли,
предоставляемые пакетом shadow- utils, для повышения безопасности системных
файлов аутентификации. По этой причине программа установки по умолчанию
включает теневые пароли.
Ниже приведен список преимуществ теневых паролей по сравнению с традиционным
способом хранения паролей в системах на базе UNIX:
•
•
•
Теневые пароли повышают безопасность системы, перемещая зашифрованные
хеши паролей из общедоступного файла /etc/passwd в файл /etc/shadow,
доступный для чтения только root пользователю.
Теневые пароли хранят информацию о старении пароля.
Теневые пароли позволяют применять некоторые политики безопасности,
установленные в /etc/login.defs файле.
Большинство утилит, предоставляемых пакетом shadow-utils, работают должным
образом независимо от того, включены или нет теневые пароли. Но поскольку
информация о старении пароля хранится исключительно в файле /etc/shadow,
некоторые утилиты и команды не будут работать без предварительного включения
теневых паролей:
•
•
•
•
Утилита chage для настройки параметров старения пароля.
Утилита gpasswd для администрирования /etc/group файла.
Команда usermod с параметром -e, –expiredate или -f, –inactive.
Команда useradd с параметром -e, –expiredate или -f, –inactive.
31
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Добавление новых учетных записей с помощью командной строки
Централизованной идентификации и аутентификации пользователей не
осуществляется.
Чтобы добавить нового пользователя в систему, зайдите как пользователь root и
введите следующее в командной строке:
useradd options username
где options - это параметры командной строки, как описано в таблице ниже.
По умолчанию useradd команда создает заблокированную учетную запись
пользователя. Чтобы разблокировать учетную запись, выполните следующую
команду под root, чтобы назначить пароль:
passwd username
При желании установите политику устаревания паролей с помощью параметров
командной строки useradd, которые представлены в таблице ниже.
Таблица. Общие параметры командной строки useradd
Вариант
Пояснение
-с comment
Комментарий может быть заменен любой строкой. Этот параметр обычно
используется для указания полного имени пользователя.
-d home_directory
Домашний каталог , который будет использоваться вместо стандартного
/home/username.
-e date
Дата отключения учетной записи в формате YYYY-MM-DD.
-f days
Количество дней после истечения срока действия пароля до тех пор, пока
учетная запись не будет отключена. Если задано значение 0, учетная запись
отключается сразу же после истечения срока действия пароля. Если задано
значение -1, учетная запись не будет отключена после истечения срока
действия пароля.
-g group_name
Имя группы или номер для группы пользователя по умолчанию (основной). Группа
должна существовать до того, как она будет указана здесь.
-G group_list
Список дополнительных (дополнительных, отличных от стандартных) названий
групп или номеров групп, разделенных запятыми, членом которых является
пользователь. Группы должны существовать до того, как они будут указаны
здесь.
-m
Создайте домашний каталог, если он не существует.
32
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Вариант
Пояснение
-M
Не создавайте домашний каталог.
-N
Не создавайте личную группу пользователя для этого пользователя.
-p password
Пароль, зашифрованный с помощью функции crypt.
-r
Создайте системную учетную запись с идентификатором пользователя меньше
1000 и без домашнего каталога.
-s
Имя оболочки входа пользователя, которая по умолчанию имеет пустое
значение.
-u uid
Числовое значение идентификатора пользователя, которое должно быть
неотрицательным, уникальным и превышать 999
Добавление новой группы пользователей с помощью командной строки
Чтобы добавить новую группу в систему, введите следующее в командной строке, как
пользователь root:
groupadd options group_name
Где options - это параметры командной строки, как описано в таблице ниже.
Таблица. Общие параметры командной строки groupadd
Вариант
Описание
-f, –force
При использовании с -g, –gid и gid уже существует, поэтому
groupadd выберет другой уникальный gid для группы.
-g, –gid
Идентификатор группы, который должен быть уникальным и
превышать 999.
-K, –key key = value
Переопределяет /etc/login.defs значений по умолчанию.
-o, –non-unique
Позволяет создавать группы с повторяющимся GID.
-p, –password
Зашифрованный пароль для новой группы, возвращаемый функцией
crypt.
-r
Создайте системную группу с идентификатором GID меньше 1000
Добавление существующего пользователя в существующую группу
Используйте usermod утилиту для добавления уже существующего пользователя в
уже существующую группу.
Различные варианты usermod оказывают различное влияние на основную группу
пользователя и на его или ее дополнительные группы.
33
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Чтобы переопределить основную группу пользователя, выполните следующую
команду как пользователь root:
~] usermod -g group_name
Чтобы переопределить дополнительные группы пользователя, выполните следующую
команду, как пользователь root:
~] usermod -G group_name1,group_name2,... user_name
Обратите внимание, что в этом случае все предыдущие дополнительные группы
пользователя заменяются новой группой или несколькими новыми группами.
Чтобы добавить одну или несколько групп в дополнительные группы пользователя,
выполните одну из следующих команд, как root:
~] usermod -aG group_name1,group_name2,... user_name
~] usermod --append -G group_name1,group_name2,... user_name
Примечание: Обратите внимание, что в этом случае новая группа добавляется к
текущим дополнительным группам пользователя.
Создание dump ядра после сбоя для последующего анализа
Служба kdump устанавливается и активируется по умолчанию в новых установках
SberLinux. В следующих разделах объясняется, что такое kdump и как установить
kdump, если он не включен по умолчанию.
Настройка использования памяти kdump и целевого местоположения из командной
строки
Оценка размера kdump
При планировании и создании среды kdump - важно знать, сколько места требуется
для файла аварийного dump.
Команда makedumpfile –mem-usage оценивает, сколько места требуется файлу
аварийного dump. Он генерирует отчет об использовании памяти. Отчет поможет
определить уровень dump и определить, какие страницы можно безопасно
исключить.
Сценарий:
34
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Выполните следующую команду, чтобы сгенерировать отчет об использовании
памяти:
makedumpfile --mem-usage /proc/kcore
TYPE PAGES EXCLUDABLE DESCRIPTION
------------------------------------------------------------ZERO 501635 yes Pages filled with zero
CACHE 51657 yes Cache pages
CACHE_PRIVATE 5442 yes Cache pages + private
USER 16301 yes User process pages
FREE 77738211 yes Free pages
KERN_DATA 1333192 no Dumpable kernel data
Примечание: Команда makedumpfile –mem-usage сообщает о требуемой памяти в
страницах. Это означает, что необходимо рассчитать размер используемой памяти
в зависимости от размера страницы ядра.
Настройка использования памяти kdump
Память резервируется во время загрузки системы. Размер памяти настраивается в
файле конфигурации system Grand Unified Bootloader (GRUB) 2. Размер памяти зависит
от значения параметра crashkernel, указанного в файле конфигурации, и размера
системной физической памяти.
Параметр crashkernel может быть определен несколькими способами. Укажите
значение crashkernel или настройте параметр auto. Параметр crashkernel=auto
резервирует память автоматически, в зависимости от общего объема физической
памяти в системе. При настройке ядро автоматически резервирует
соответствующий объем требуемой памяти для ядра захвата. Это помогает
предотвратить ошибки нехватки памяти (ООМ).
Примечание: Автоматическое выделение памяти для kdump варьируется в
зависимости от аппаратной архитектуры системы и доступного объема памяти.
Если в системе меньше минимального порога памяти для автоматического
выделения, настройте объем зарезервированной памяти вручную.
Предварительные условия:
35
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
Права root пользователя.
Выполнены требования к kdump конфигурациям и целям.
Сценарий:
1.
Отредактируйте /etc/default/grub файл.
2.
Установите crashkernel= параметр. Например, чтобы зарезервировать 128
Мбайт памяти, используйте следующее:
crashkernel=128 М
Установите объем зарезервированной памяти в переменную в зависимости от
общего объема установленной памяти. Синтаксис для резервирования памяти в
переменную crashkernel=:,:. Например:
crashkernel= 512M-2G: 64M, 2G-:128M
Приведенный выше пример резервирует 64 Мбайт памяти, если общий объем
системной памяти составляет от 512 Мбайт до 2 Гбайт. Если общий объем памяти
превышает 2 Гбайт, резервируется 128 Мбайт.
Некоторые системы требуют резервирования памяти с определенным
фиксированным смещением, поскольку crashkernel резервирование выполняется очень
рано, и требуется зарезервировать некоторую область для специального
использования. Если задано смещение, то зарезервированная память начинается с
него. Чтобы компенсировать зарезервированную память, используйте следующий
синтаксис:
crashkernel=128M@16M
В приведенном выше примере kdump резервируется 128 Мбайт памяти, начиная с 16
Мбайт (физический адрес 0x01000000). Если параметр offset установлен в 0 или
полностью опущен, kdump зарезервированная память автоматически смещается.
Используйте этот синтаксис при настройке резервирования переменной памяти. В
этом случае смещение всегда указывается последним (например, crashkernel=512M2G:64M,2G-:128M@16M).
3.
Используйте следующую команду для обновления файла конфигурации GRUB2:
grub2-mkconfig -o /boot/grub2/grub.cfg
36
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Примечание: Альтернативный способ настроить память для kdump - добавить
crashkernel= параметр к kernelopts** переменной с помощью команды grub2-editenv,
которая обновит все загрузочные записи. Или же используйте grubby утилиту для
обновления одной загрузочной записи, нескольких загрузочных записей или всех
загрузочных записей.
kdump с использованием системных ролей
Параметры, используемые для системных ролей SberLinux dump ядра, следующие:
Переменная роли
Описание
kdump_path
Путь, к которому записан vmcore. Если значение kdump_target не равно null, то
путь указан относительно этой цели dump. В противном случае это должен
быть абсолютный путь в корневой файловой системе.
Можно установить основные параметры dump ядра на нескольких системах,
используя системную роль dump ядра, запустив Ansible playbook.
Примечание: Роль dump ядра полностью заменяет конфигурацию kdump управляемых
хостов, заменяя файл /etc/kdump.conf. Кроме того, если применяется роль dump ядра,
все предыдущие настройки kdump также заменяются, даже если они не указаны в
переменных роли, путем замены /etc/sysconfig/kdump файла.
Предварительные условия:
Пакет Ansible Core установлен на управляющей машине.
Пакет sberlinux-system-roles установлен в системе. Запустите playbook.
Файл inventory в котором перечислены системы. Разверните на них kdump.
Сценарий:
1.
Создайте новый файл playbook.yml со следующим содержимым:
--- - hosts: kdump-test
vars:
kdump_path: /var/crash
roles:
- sberlinux-system-roles.kdump
2.
При необходимости проверьте синтаксис playbook.
37
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
ansible-playbook --syntax-check playbook.yml
3.
Запустите playbook в инвентарном файле:
ansible-playbook -i inventory_file /path/to/file/playbook.yml
Устранение неполадок с помощью лог-файлов
Службы, обрабатывающие сообщения системного журнала
Следующие две службы обрабатывают syslog сообщения:
•
•
Демон systemd-journald.
Служба Rsyslog.
Демон systemd-journald собирает сообщения из различных источников и пересылает
их Rsyslog для дальнейшей обработки. Демон systemd-journald собирает сообщения из
следующих источников:
•
•
•
•
из ядра;
на ранней стадии процесса загрузки;
из стандартного вывода и вывода ошибок демонов при их запуске;
из Syslog.
Служба Rsyslog сортирует сообщения syslog по типу и приоритету и записывает их в
файлы в каталоге /var/log. В каталоге /var/log постоянно хранятся сообщения
журнала.
Подкаталоги для хранения сообщений системного журнала
Следующие подкаталоги в /var/log каталоге хранят syslog сообщения:
•
•
•
•
•
/var/log/messages - все syslog сообщения, подкаталог содержит глобальный
системный журнал, в котором пишутся сообщения с момента запуска системы,
от ядра, различных служб, обнаруженных устройствах, сетевых интерфейсов и
много другого;
/var/log/secure - сообщения и ошибки, связанные с безопасностью и
аутентификацией;
/var/log/maillog - сообщения и ошибки, связанные с почтовым сервером;
/var/log/cron - файлы журналов, связанные с периодически выполняемыми
задачами;
/var/log/boot.log - файлы журналов, связанные с запуском системы.
Чтобы гарантировать, что журналы с различных компьютеров в среде записываются
централизованно на сервере ведения журнала, можно настроить приложение Rsyslog
38
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
для записи журналов, соответствующих определенным критериям, из клиентской
системы на сервер.
Служба ведения журнала Rsyslog:
Приложение Rsyslog в сочетании со systemd-journald службой обеспечивает локальную
и удаленную поддержку ведения журнала в SberLinux. Демон rsyslogd непрерывно
считывает syslog сообщения, полученные systemd-journald службой из журнала.
rsyslogd затем фильтрует и обрабатывает эти syslog события и записывает их в
rsyslog файлы журналов или пересылает другим службам в соответствии со своей
конфигурацией.
Демон rsyslogd также обеспечивает расширенную фильтрацию, защищенную от
шифрования ретрансляцию сообщений, модули ввода и вывода и поддержку
транспортировки с использованием протоколов TCP и UDP.
Файл /etc/rsyslog.conf является основным файлом конфигурации для rsyslog, в нем
можно указать правила, в соответствии с которыми rsyslogd обрабатывает
сообщения. Можно классифицировать сообщения по их источнику, теме (объекту) и
срочности (приоритету), а затем назначить действие, которое должно быть
выполнено, когда сообщение соответствует этим критериям.
В файле /etc/rsyslog.conf, можно просмотреть список файлов журналов,
поддерживаемых rsyslogd. Большинство файлов журнала находятся в /var/log/
каталоге. Некоторые приложения, такие как httpd и samba, хранят свои файлы
журналов внутри /var/log/ подкаталога.
Дополнительные источники:
Справочные страницы: rsyslogd(8) и rsyslog.conf(5). Документация, установленная
вместе с rsyslog-doc пакетом в /usr/share/doc/rsyslog/html/index.html файле.
Подробнее о настройках журналов см. в разделах «Подкаталоги для хранения
сообщений системного журнала», «Просмотр логов с помощью командной строки» и
«Начало работы с ведением журнала ядра».
Настройка Rsyslog в SberLinux
Сервис Rsyslog?
Rsyslog - расширяемый сервис для управления логами с разнообразными
возможностями. Среди его возможностей можно отметить поддержку фильтрации
контента, а также передачу логов по сетям.
Основные возможности Rsyslog:
•
•
•
многопоточность;
TCP, SSL, TLS, RELP;
поддержка MySQL, PostgreSQL, Oracle;
39
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
фильтрация журналов;
полностью настраиваемый формат вывода.
Как происходит логирование?
Все программы SberLinux ведут лог путем отправки сообщений об ошибках или своем
состоянии с помощью syslog или просто записывая все сообщения в файл, который
будет находиться в каталоге /var/log/.
Но важное значение имеет уровень подробности логирования. Можно настраивать
подробность в каждой отдельной программе или с помощью syslog. Это поможет
уменьшить использование дискового пространства для хранения логов.
Например, ядро определяет уровни (приоритеты) логов:
•
•
•
•
•
•
•
•
KERN_EMERG - система неработоспособна;
KERN_ALERT - нужно немедленно принять меры;
KERN_CRIT - критическая ошибка;
KERN_ERR - обычная ошибка;
KERN_WARNING - предупреждение;
KERN_NOTICE - замечание;
KERN_INFO - информационное сообщение;
KERN_DEBUG - сообщения отладки.
Настройка Rsyslog в SberLinux
Все настройки Rsyslog находятся в файле /etc/rsyslog.conf и других конфигурационных
файлах из /etc/rsyslog.d/. Можно посмотреть, существуют ли у вас эти файлы,
выполнив:
ls /etc/rsys*
rsyslog.conf rsyslog.d/
Основной конфигурационный файл - /etc/rsyslog.conf, в нем подключены все файлы из
папки /etc/rsyslog.d/ с помощью директивы IncludeConfig в самом начале файла:
IncludeConfig /etc/rsyslog.d/*.conf
В этих файлах могут содержаться дополнительные настройки, например,
аутентификация на Rsyslog сервере. В главном конфигурационном файле содержится
много полезных настроек. Обычно он обеспечивает управление локальными логами по
умолчанию, но для работы через сеть нужно добавить настройки.
Синтаксис конфигурационного файла прост:
40
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
$ переменная значение
Все директивы начинаются со знака доллара, содержат имя переменной, а дальше
связанное с ней значение. Так выглядит каждая строка конфигурационного файла. В
его первой части размещены общие настройки программы и загрузка модулей. Во
второй - ваши правила сортировки и фильтрации лог файлов.
ModLoad imuxsock # provides support for local system logging $ModLoad imklog # provides
kernel logging support $ModLoad immark # provides –MARK– message capability
provides UDP syslog reception
$ModLoad imudp $UDPServerRun 514
provides TCP syslog reception
$ModLoad imtcp $InputTCPServerRun 514
В этом участке загружаются все необходимые модули программы. Существуют
четыре типа модулей:
1.
Модули ввода - можно рассматривать, как способ сбора информации из
различных источников, начинаются с im.
2.
Модули вывода - позволяют отправлять сообщения в файлы или по сети, или в
базу данных, имя начинается на om;
3.
Модули фильтрации - позволяют фильтровать сообщения по разным
параметрам, начинаются с fm;
4.
Модули парсинга - предоставляют расширенные возможности для
синтаксического анализа сообщения, начинаются с pm. Сначала загружается
модуль imuxsock, который позволяет сервису получать сообщения из сокетов, а
последующий загружаемый модуль imklog получает сообщения ядра. Модуль mark
позволяет маркировать соединения или выводить сообщения о том, что syslog
все еще работает. Например, можно дать указания rsyslog выводить сообщения
каждые 20 минут:
MarkMessagePeriod 1200
Далее идут глобальные директивы:
ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
В этой строке указывается, что нужно использовать стандартный формат хранения
времени, в секундах с 1970 года.
41
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Дальше следует набор прав разрешений для файлов журналов, которые будут
созданы в системе:
FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
После создания этих файлов их права можно менять, на те, которые необходимы.
Правила сортировки логов
Набор правил по умолчанию:
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
Каждое правило имеет свой синтаксис, сначала идет источник и приоритет, затем
действие. Если источник и приоритет совпадают, сообщение отправляется в
указанный файл. Например, можно отправить больше сообщений в лог системы
/var/messages:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
В этой строке выберите все сообщения уровня info, кроме mail, authpriv и cron.
Шаблон mail.none означает, что ни один уровень сообщений не нужно логировать.
Соответственно, конструкция .info - означает, что логируются сообщения от всех
источников, но только с уровнем info, а (точка) .* - означает все сообщения, со всеми
уровнями.
Источник и приоритет нечувствительны к регистру. Также приоритеты уровней
error, warn и panic больше не используются, так как считаются устаревшими. В
целом, в качестве источников можно использовать:
auth; authpriv; cron; daemon; kern; lpr; mail; mark; news; security (эквивалентно auth);
syslog; user; uucp; local0 … local7. А в качестве приоритетов можно применить:
42
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
emerg (раньше panic); alert; crit; error (раньше err); warn (раньше warning); notice; info;
debug.
Для фильтрации логов могут использоваться не только источник и приоритет, но и
более сложные выражения на основе условий и сравнений.
Можно выполнять фильтрацию сообщений с помощью синтаксиса:
:поле, сравнение, “значение” путь_к_файлу
В качестве операции сравнения можно использовать такие варианты:
•
•
•
•
contains — поле содержит указанное значение;
isequal — поле должно быть идентичным значению;
startswith — поле должно начинаться со значения;
regex — сравнивает поле с регулярным выражением.
Например, отфильтруйте сообщения только от определенной программы:
:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop
Кроме того, можно использовать более простой синтаксис, в виде выражения if. Вот
основной синтаксис:
if $поле сравнение ‘значение’ then файл
Здесь используются те же самые компоненты. Например:
if $syslogtag == 'giomanager' then /var/log/giomanager.log
Настройка syslog для удаленного логирования
Чтобы отправить лог на удаленный сервер, нужно указать @** и ip** адрес
удаленной машины, на которой запущен rsyslog:
*.info;mail.none;authpriv.none;cron.none @xx.xx.xx.xx:514
Где 514 - это порт, на котором осуществляется rsyslog. Настройка rsyslog на прием
логов заключается в запуске сервиса с модулями imtcp и imudp.
Чтобы получить логи с определенной машины, отфильтровать их из общего потока с
помощью фильтров, выполните:
43
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
if $fromhost-ip contains '192.168.1.10' then /var/log/proxyserver.log
Без фильтров, сообщения с разных машин будут писаться в один общий лог системы
Sberlinux в зависимости от того как они будут распределены.
Проверка файлов журнала с помощью веб-консоли
Выполните действия, описанные в этой процедуре, чтобы проверить файлы журналов
с помощью веб-консоли.
Процедура
1.
Войдите в веб-консоль SberLinux.
2.
Нажмите log.
Рисунок. Проверка файлов журнала в веб-консоли
Просмотр логов с помощью командной строки
Журнал - это компонент systemd, который помогает просматривать файлы журналов
и управлять ими. Он решает проблемы, связанные с традиционным ведением журнала,
тесно интегрирован с остальной частью системы и поддерживает различные
технологии ведения журнала и управление доступом к файлам журнала.
Используйте команду journalctl для просмотра сообщений в системном журнале с
помощью командной строки, например:
$ journalctl -b | grep kvm
May 15 11:31:41 localhost.localdomain kernel: kvm-clock: Using msrs 4b564d01 and
4b564d00
May 15 11:31:41 localhost.localdomain kernel: kvm-clock: cpu 0, msr 76401001, primary cpu
clock
…
В таблицах ниже представлены команды для просмотра системной информации,
информации о конкретных услугах и журналы, связанные с конкретными загрузками.
44
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Таблица. Просмотр системной информации
Команда
Описание
journalctl
Показывает все собранные записи журнала.
journalctl FILEPATH
Показывает журналы, связанные с определенным файлом.
Например, команда journalctl /dev/sda отображает журналы,
связанные с файловой системой /dev/sda.
journalctl -b
Показывает журналы для текущей загрузки.
journalctl -k -b -1
Показывает журналы ядра для текущей загрузки
Таблица. Просмотр информации о конкретных услугах
Команда
Описание
journalctl -b _SYSTEMD_UNIT=foo
Фильтры регистрируются, чтобы увидеть те, которые
соответствуют сервису foo systemd.
journalctl -b _SYSTEMD_UNIT=foo
_PID=number
Эта команда показывает журналы для этого совпадения systemdunits foo и PID number.
journalctl -b _SYSTEMD_UNIT=foo
_PID=number +
_SYSTEMD_UNIT=foo1
Разделитель + (плюс) объединяет два выражения в логическое или,
например, эта команда показывает все сообщения от процесса
службы foo со знаком PID плюс все сообщения от службы foo1 (от
любого из ее процессов)
journalctl -b _SYSTEMD_UNIT=foo
_SYSTEMD_UNIT=foo1
Эта команда показывает все записи, соответствующие любому
выражению и относящиеся к одному и тому же полю. Здесь эта
команда показывает журналы, соответствующие systemd-unit foo
или systemd-unit foo1
Таблица. Просмотр журналов, связанных с конкретными загрузками
Команда
Описание
journalctl –list-boots
Показывает табличный список номеров загрузки, их
идентификаторов и временных меток первого и последнего
сообщения, относящихся к загрузке. Используйте идентификатор в
следующей команде для просмотра подробной информации.
journalctl –boot=ID
_SYSTEMD_UNIT=foo
Отображает информацию об указанном идентификаторе загрузки
Об устранении неполадок с помощью лог-файлов подробнее в разделе «Устранение
неполадок с помощью лог-файлов».
45
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Управление программными пакетами
Инструменты управления программным обеспечением
В SberLinux установка программного обеспечения поддерживается новой версией YUM
tool (YUM v4), которая основана на технологии DNF.
Примечание: Хотя YUM v4, используемый в SberLinux, основан на DNF, он совместим с
YUM v3. Пакеты предоставляют символические ссылки на совместимость, поэтому
двоичные файлы, файлы конфигурации и каталоги можно найти в обычных местах.
Обратите внимание, что устаревший Python API, предоставляемый YUM v3, больше не
доступен. Перенесите свои плагины и скрипты на новый API, предоставляемый YUM
v4 (DNF Python API), который является стабильным и полностью поддерживается.
Потоки приложений
SberLinux вводит концепцию потоков приложений. Несколько версий компонентов
пользовательского пространства поставляются и обновляются чаще, чем пакеты
базовой операционной системы. Это обеспечивает большую гибкость при настройке
SberLinux, не влияя на базовую стабильность платформы или конкретных
развертываний.
Компоненты, доступные в виде потоков приложений, могут быть упакованы в виде
модулей или пакетов RPM и доставляются через репозиторий AppStream в SberLinux.
Каждый поток приложений имеет определенный жизненный цикл, либо такой же, как
SberLinux, либо более короткий, более подходящий для конкретного приложения.
Потоки приложений с более коротким жизненным циклом перечислены на странице
жизненного цикла потоков приложений SberLinux.
Модули - это наборы пакетов, представляющих логическую единицу: приложение,
языковой стек, базу данных или набор инструментов. Эти пакеты создаются,
тестируются и выпускаются вместе.
Потоки модулей представляют версии компонентов потока приложений. Например, в
модуле postgresql доступны два потока (версии) сервера базы данных PostgreSQL:
PostgreSQL 10 (поток по умолчанию) и PostgreSQL 9.6. В системе может быть
установлен только один поток модуля. Различные версии можно использовать в
отдельных контейнерах.
Поиск программных пакетов с помощью YUM
yum позволяет выполнять полный набор операций с программными пакетами.
Используйте следующую процедуру, чтобы найти пакет, содержащий конкретное
приложение или другой контент.
Сценарий:
46
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Для поиска пакета используйте:
yum search term
2.
Замените term термином, относящимся к упаковке.
Примечание: Команда yum search возвращает совпадения терминов в названии и
сводке пакетов. Это ускоряет поиск и позволяет искать пакеты, название которых
неизвестно, но известен связанный термин.
3.
Чтобы включить совпадения терминов в описания пакетов, используйте:
yum search --all term
Замените term термином, чтобы найти его в имени пакета, сводке или описании.
Примечание: Команда yum search –all обеспечивает более исчерпывающий, но более
медленный поиск.
Используйте следующий сценарий для составления списка установленных и
доступных пакетов.
Сценарий:
1.
Чтобы перечислить информацию обо всех установленных и доступных пакетах,
используйте:
yum list --all
2.
Чтобы перечислить все пакеты, установленные в системе, используйте:
yum list --installed
3.
Чтобы перечислить все пакеты во всех разрешенных репозиториях, доступных
для установки, используйте:
yum list --available
Примечание: Отфильтруйте результаты, добавив глобальные выражения в качестве
аргументов.
Используйте следующий сценарий для составления списка включенных и отключенных
репозиториев.
Сценарий:
47
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Чтобы перечислить все включенные репозитории в системе, используйте:
yum repolist
2.
Чтобы составить список всех отключенных репозиториев в системе,
используйте:
yum repolist --disabled
3.
Чтобы перечислить как включенные, так и отключенные репозитории,
используйте:
yum repolist --all
4.
Чтобы перечислить дополнительную информацию о репозиториях, используйте:
yum repoinfo
Примечание: Отфильтруйте результаты, передав идентификатор или имя
репозиториев в качестве аргументов или добавив глобальные выражения.
С помощью yum можно отображать различные типы информации о пакете, например
версию, выпуск, размер, загруженные плагины и многое другое.
Сценарий:
1.
Чтобы отобразить информацию об одном или нескольких пакетах, используйте:
## yum info package-name
2.
Замените package-name на необходимое имя пакета.
Примечание: Отфильтруйте результаты, добавив глобальные выражения в качестве
аргументов.
Используется yum для просмотра установленных групп пакетов и фильтрации
результатов листинга.
Сценарий:
1.
Чтобы просмотреть количество установленных и доступных групп,
используйте:
## yum group summary
48
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
2.
Чтобы перечислить все установленные и доступные группы, используйте:
## yum group list
Примечание: Отфильтруйте результаты, добавив параметры командной строки для
команды yum group list (–hidden, –available).
3.
Чтобы перечислить обязательные и необязательные пакеты, содержащиеся в
определенной группе, используйте:
## yum group info group-name
Замените group-name на необходимое название группы.
Примечание: Отфильтруйте результаты, добавив глобальные выражения в качестве
аргументов.
Команды yum позволяют фильтровать результаты, добавляя одно или несколько
глобальных выражений в качестве аргументов.
Сценарий:
Чтобы убедиться, что глобальные выражения передаются yum по назначению,
используйте один из следующих методов:
•
Заключите все глобальное выражение в двойные или одинарные кавычки.
## yum provides "*/file-name".
Замените file-name на необходимое имя файла.
•
Экранируйте подстановочные знаки, поставив перед ними символ обратной
косой черты ().
## yum provides \*/file-name
Замените file-name на необходимое имя файла.
Установка программных пакетов
1.
Чтобы установить пакет и все зависимости этого пакета, используйте:
package-name
Замените package-name на необходимое название пакета.
49
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
2.
Чтобы установить несколько пакетов и их зависимостей одновременно,
используйте:
## yum install package-name-1 package-name-2
Замените package-name-1 и package-name-2 на необходимые названия пакетов.
3.
Если известно имя двоичного файла, который нужно установить, но не имя
пакета, используйте путь к двоичному файлу в качестве аргумента:
## yum install /usr/sbin/binary-file
Замените /usr/sbin/binary-file на путь к двоичному файлу.
yum просматривает списки пакетов, находит пакет, который предоставляет
/usr/sbin/binary-file и запрашивает разрешение на установку.
4.
Чтобы установить ранее загруженный пакет из локального каталога,
используйте:
## yum install **/path/**
Замените /path/ на путь к пакету.
Примечание: Оптимизируйте поиск пакетов, явно определив, как анализировать
аргумент.
Следующая сценарий описывает, как установить группу пакетов по имени группы или
с помощью идентификатора группы yum.
Сценарий:
1.
Чтобы установить группу пакетов по имени группы, используйте:
## yum group install group-name
Или
## yum install @group-name
Замените group-name названием группы или группы необходимой среды.
2.
Чтобы установить группу пакетов по идентификатору группы, используйте:
50
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## yum group install
Замените groupId идентификатором группы.
Чтобы оптимизировать процесс установки и удаления, добавьте -n, -na, или -nevra
суффиксы к y um install yum remove командам и, чтобы явно определить, как
анализировать аргумент.
1.
Чтобы установить пакет, используя его точное имя, используйте:
## yum install-n
Замените -n на необходимое имя пакета.
2.
Чтобы установить пакет, используя его точное имя и архитектуру,
используйте:
## yum install-na name.architecture
Замените name.architecture необходимым именем и архитектурой пакета.
3.
Чтобы установить пакет, используя его точное имя, эпоху, версию, выпуск и
архитектуру, используйте:
yum install-nevra name-epoch:version-release.architecture
Замените name-epoch:version-release.architecture необходимым именем, временем,
версией, выпуском и архитектурой пакета.
Обновление программных пакетов
Следующий сценарий описывает, как проверить доступные обновления для пакетов,
установленных в системе, с помощью yum.
Сценарий:
1.
Чтобы узнать, какие пакеты, установленные в системе, имеют доступные
обновления, используйте:
yum check-update
Выходные данные возвращают список пакетов и их зависимостей, для которых
доступно обновление.
51
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Используйте следующий сценарий для обновления одного пакета и его зависимостей
с помощью yum.
2.
Чтобы обновить пакет, используйте:
package-name
Замените package-name на необходимое имя пакета.
Примечание: При применении обновлений к ядру yum всегда устанавливает новое
ядро, независимо от того, используется ли yum update команда или yum install.
Обновление группы пакетов с помощью YUM
Используйте следующий сценарий для обновления группы пакетов и их зависимостей
с помощью yum.
Сценарий
•
Чтобы обновить группу пакетов, используйте:
yum group update group-name
Заменить название группы с именем группы пакетов.
Обновление всех пакетов и их зависимостей с помощью YUM
Используйте следующий сценарий для обновления всех пакетов и их зависимостей с
помощью yum.
Сценарий:
•
Чтобы обновить все пакеты и их зависимости, используйте:
yum update
Обновление пакетов, связанных с безопасностью, с помощью YUM
Используйте следующий сценарий для обновления пакетов доступные пакеты,
содержащие ошибки безопасности, используя yum.
Сценарий:
•
Чтобы перейти на последние доступные пакеты, содержащие ошибки
безопасности, используйте:
yum update --security
52
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
Для обновления до последних пакетов исправлений безопасности используйте:
yum update-minimal --security
Автоматизация обновления программного обеспечения
Чтобы автоматически и регулярно проверять и загружать обновления пакетов,
используйте DNF Automatic (Автоматический), который предоставляется dnfautomatic.
DNF Automatic (Автоматический) является альтернативным интерфейсом командной
строки для yum, который подходит для автоматического и регулярного выполнения с
использованием системных таймеров, заданий cron и других подобных инструментов.
DNF Automatic (Автоматический) синхронизирует метаданные пакета по мере
необходимости, а затем проверяет наличие доступных обновлений. После этого
инструмент может выполнить одно из следующих действий в зависимости от того,
как оно настроено:
•
•
•
Выход.
Загрузку обновленных пакетов.
Загрузку и применение обновления.
О результатах операции сообщается с помощью выбранного механизма, такого как
стандартный вывод или электронное письмо.
Установка автоматического DNF
Следующий сценарий описывает, как установить DNF Automatic инструмент.
Сценарий:
•
Для установки dnf-automatic, используйте:
yum install dnf-automatic
Этапы проверки:
•
Чтобы убедиться в успешной установке, подтвердите наличие пакета,
выполнив следующую команду:
rpm -qi dnf-automatic
Файл автоматической конфигурации DNF
По умолчанию, DNF Automatic использует /etc/dnf/automatic.conf в качестве его
конфигурационного файла для определения его поведения.
53
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Файл конфигурации разделен на следующие тематические разделы:
•
•
•
•
•
Раздел [commands]. Устанавливает режим работы DNF Автоматический.
Раздел [emitters]. Определяет, как результаты сообщений DNF Automatic.
Раздел [command_email]. Предоставляет конфигурацию отправителя
электронной почты для внешней команды, используемой для отправки
электронной почты.
Раздел [email]. Предоставляет конфигурацию отправителя электронной
почты.
Раздел [base]. Переопределяет настройки из основного конфигурационного
файла yum.
При настройках файла /etc/dnf/automatic.conf по умолчанию DNF автоматически
проверяет наличие доступных обновлений, загружает их и сообщает о результатах в
виде стандартного вывода.
Примечание: Настройки режима работы из раздела [commands] переопределяются
настройками, используемыми блоком таймера systemd для всех блоков таймера,
кроме dnf-automatic.timer.
Включение автоматического DNF
Сценарий:
Выберите, включите и запустите системный таймер, который соответствует
потребностям:
systemctl enable --now <unit>
Где unit является одним из следующих таймеров:
•
•
•
•
dnf-automatic-download.timer
dnf-automatic-install.timer
dnf-automatic-notifyonly.timer
dnf-automatic.timer
Для загрузки доступных обновлений, используйте:
systemctl enable dnf-automatic-download.timer
systemctl start dnf-automatic-download.timer
Для загрузки и установки доступных обновлений, используйте:
54
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
systemctl enable dnf-automatic-install.timer
systemctl start dnf-automatic-install.timer
Для отчетности о доступных обновлениях, используйте:
systemctl enable dnf-automatic-notifyonly.timer
systemctl start dnf-automatic-notifyonly.timer
При необходимости используйте:
systemctl enable dnf-automatic.timer
systemctl start dnf-automatic.timer
Что касается загрузки и применения обновлений, этот блок таймера работает в
соответствии с настройками в /etc/dnf/automatic.conf конфигурационный файл.
Поведение по умолчанию аналогично dnf-automatic-download.timer: он загружает
обновленные пакеты, но не устанавливает их.
Примечание: Запустите DNF Automatic выполнив /usr/bin/dnf-automatic файл
непосредственно из командной строки или из пользовательского скрипта.
Чтобы убедиться, что таймер включен, выполните следующую команду:
systemctl status <systemd timer unit>
Дополнительные ресурсы:
Для получения более подробной информации о блоках таймера systemd см.
руководство man dnf-automatic(8).
Обзор блоков таймера systemd, входящих в комплект поставки dnf-automatic
Блоки таймера systemd имеют приоритет и переопределяют настройки, касающиеся
загрузки и применения обновлений в конфигурационном файле /etc/dnf/automatic.conf.
Например, если установлен следующий параметр в конфигурационный файл
/etc/dnf/automatic.conf, но активирован dnf-automatic-notifyonly.timer unit, пакеты не
будут загружены:
55
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
download_updates = yes.
В dnf-automatic пакет включает в себя следующие блоки таймера systemd, которые
представлены в таблице.
Таблица. Блоки таймера systemd в dnf-automatic пакете
Переопределяет
настройки в
/etc/dnf/automatic.conf
файл?
Блок таймера
Функция
dnf-automaticdownload.timer
Загружает пакеты в кеш и делает их доступными ДА
для обновления. Примечание: Этот блок таймера
не устанавливает обновленные пакеты. Чтобы
выполнить установку, необходимо выполнить
команду dnf update .
dnf-automaticinstall.timer
Загружает и устанавливает обновленные
пакеты.
dnf-automaticnotifyonly.timer
Загружает только данные репозитория, чтобы
ДА
поддерживать кеш репозитория в актуальном
состоянии, и уведомляет о доступных
обновлениях. Примечание: Этот блок таймера не
загружает и не устанавливает обновленные
пакеты.
dnf-automatic.timer
Поведение этого таймера в отношении загрузки НЕТ
и применения обновлений определяется
настройками в конфигурационном файле
/etc/dnf/automatic.conf. Поведение по умолчанию
такое же, как и для блока dnf-automaticdownload.timer: оно только загружает пакеты, но
не устанавливает их
ДА
Удаление программных пакетов
Удаление пакетов с YUM
Используйте следующий сценарий, чтобы удалить пакет либо по имени группы, либо
по идентификатору группы.
Сценарий:
1.
Чтобы удалить определенный пакет и все зависимые пакеты, используйте:
yum remove package-name
56
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Замените package-name на необходимое название пакета.
2.
Чтобы удалить несколько пакетов и их зависимости одновременно,
используйте:
yum remove package-name-1 package-name-2
Замените package-name-1 и package-name-2 на необходимые названия пакетов.
Примечание: yum не может удалить пакет, не удалив зависимые пакеты.
Оптимизируйте поиск пакетов, явно определив, как анализировать аргумент.
Удаление группы пакетов с помощью YUM
Используйте следующий сценарий, чтобы удалить пакет либо по имени группы, либо
по идентификатору группы.
Сценарий:
1.
Чтобы удалить группу пакетов по имени группы, используйте:
yum group remove group-name
Или
yum remove @group-name
Замените group-name необходимым названием группы.
3.
Чтобы удалить группу пакетов по идентификатору группы, используйте:
yum group remove
Замените groupId идентификатором группы.
Указание имени пакета во входных данных YUM
Чтобы оптимизировать процесс установки и удаления, добавьте -n, -na, или -nevra
суффиксы к yum install yum remove командам и, чтобы явно определить, как
анализировать аргумент:
1.
Чтобы установить пакет с необходимым именем, используйте:
yum install-n
Замените -n на необходимое имя пакета.
57
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
2.
Чтобы установить пакет с необходимым именем и архитектурой, используйте:
yum install-na name.architecture
Замените name.architecture необходимым именем и архитектурой пакета.
3.
Чтобы установить пакет с необходимым именем, временем, версией, выпуском и
архитектурой, используйте:
yum install-nevra name-epoch:version-release.architecture
Замените epoch:version-release.architecture необходимым именем, временем, версией,
выпуском и архитектурой пакета.
Управление группами пакетов программного обеспечения
Группа пакетов - это набор пакетов, которые служат общей цели (системные
инструменты, звук и видео). При установке группы пакетов извлекается набор
зависимых пакетов, что значительно экономит время.
Перечисление групп пакетов с помощью YUM
Используйте yum для просмотра установленных групп пакетов и фильтрации
результатов листинга.
Сценарий:
1.
Чтобы просмотреть количество установленных и доступных групп,
используйте:
yum group summary
2.
Чтобы перечислить все установленные и доступные группы, используйте:
yum group list
Примечание: Отфильтруйте результаты, добавив параметры командной строки для
команды yum group list (–hidden, –available).
4.
Чтобы перечислить обязательные и необязательные пакеты, содержащиеся в
определенной группе, используйте:
yum group info group-name
Замените group-name на необходимое название группы.
58
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Примечание: Отфильтруйте результаты, добавив глобальные выражения в качестве
аргументов.
Установка группы пакетов с помощью YUM
Следующий сценарий описывает, как установить группу пакетов по имени группы или
с помощью идентификатора группы yum.
Сценарий:
1.
Чтобы установить группу пакетов по имени группы, используйте:
yum group install group-name
Или
yum install @group-name
Замените group-name необходимым названием группы.
2.
Чтобы установить группу пакетов по идентификатору группы, используйте:
yum groupId install
Замените groupId идентификатором группы.
Удаление группы пакетов с помощью YUM
Используйте следующий сценарий, чтобы удалить пакет либо по имени группы, либо
по идентификатору группы.
Сценарий:
1.
Чтобы удалить группу пакетов по имени группы, используйте:
yum group remove group-name
Или
yum remove @group-name
Замените group-name полным названием группы.
2.
Чтобы удалить группу пакетов по идентификатору группы, используйте:
59
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
yum groupId remove
Замените groupId идентификатором группы.
Указание глобальных выражений во входных данных YUM
yum команды позволяют фильтровать результаты, добавляя одно или несколько
глобальных выражений в качестве аргументов. Избегайте глобальных выражений при
передаче их в качестве аргументов команде yum.
Сценарий:
1.
Чтобы убедиться, что глобальные выражения передаются yum по назначению,
используйте один из следующих методов:
Заключите все глобальное выражение в двойные или одинарные кавычки.
yum provides "*/file-name".
Замените file-name необходимым именем файла.
2.
Экранируйте подстановочные знаки, поставив перед ними символ обратной
косой черты ( слеш).
yum provides \*/file-name
Замените file-name необходимым именем файла.
Обработка истории управления пакетами
Команда yum history позволяет просматривать информацию о временной шкале
транзакции yum, даты и время их возникновения, количество затронутых пакетов,
были ли эти транзакции успешными или были прерваны, и была ли изменена база
данных RPM между транзакциями. Команда yum history также может быть
использована для отмены или повторного выполнения транзакций.
Листинг сделок с YUM
Используйте следующий сценарий, чтобы перечислить последние транзакции,
последние операции для выбранного пакета и сведения о конкретной транзакции.
Сценарий:
1.
Чтобы отобразить список всех последних транзакций yum, используйте:
60
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
yum history
2.
Чтобы отобразить список всех последних операций для выбранного пакета,
используйте:
yum history list package-name
Замените package-name на необходимое имя пакета.
Примечание: Отфильтруйте выходные данные команды, добавив глобальные
выражения.
3.
Чтобы проверить конкретную транзакцию, используйте:
yum history info transactionID
Замените transactionID на необходимый идентификатор транзакции.
Возврат транзакций с помощью YUM
Следующий сценарий описывает, как отменить выбранную транзакцию или
последнюю транзакцию с помощью yum.
Сценарий:
1.
Чтобы отменить конкретную транзакцию, используйте:
yum history undo transactionID
Замените transactionID на необходимый идентификатор транзакции.
2.
Чтобы отменить последнюю транзакцию, используйте:
yum history undo last
Примечание: Команда yum history undo отменяет только те шаги, которые были
выполнены во время транзакции. Если транзакция установила новый пакет, команда
yum history undo удаляет его. Если транзакция удалила пакет, команда yum history
undo переустанавливает его. Команда yum history undo также пытается откатить
назад все обновленные пакеты до их предыдущих версий, если старые пакеты все еще
доступны.
Повторяющиеся транзакции с YUM
61
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Используйте следующий сценарий, чтобы повторить выбранную транзакцию или
последнюю используемую транзакцию yum.
Сценарий:
1.
Чтобы повторить определенную транзакцию, используйте:
yum history redo transactionID
Замените transactionID на необходимый идентификатор транзакции.
2.
Чтобы повторить последнюю транзакцию, используйте:
yum history redo last
Примечание: команда yum history redo повторяет только те шаги, которые были
выполнены во время транзакции.
Указание глобальных выражений во входных данных YUM
Команды yum позволяют фильтровать результаты, добавляя одно или несколько
глобальных выражений в качестве аргументов.
Сценарий:
Чтобы убедиться, что глобальные выражения передаются по назначению yum,
используйте один из следующих методов:
1.
Заключите глобальное выражение (как на примере: “/file-name”) в двойные или
одинарные кавычки.
yum provides "*/file-name".
Замените file-name необходимым именем файла.
2.
Экранируйте подстановочные знаки, поставив перед ними символ обратной
косой черты ( слеш).
yum provides \*/file-name
Замените file-name необходимым именем файла.
Полный список доступных разделов [repository] см. в [repository] OPTIONS разделе
руководства man yum.conf(5).
62
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Управление репозиториями программного обеспечения
Информация о конфигурации для yum и связанных с ней утилит хранится в файле
/etc/yum.conf. Этот файл содержит один или несколько разделов [repository], которые
позволяют устанавливать параметры, зависящие от репозитория. Рекомендуется
определять отдельные репозитории в новых или существующих .repo файлах в
/etc/yum.repos.d/ каталоге.
Примечания: значения, которые определены в отдельных разделах [repository] файла
/etc/yum.conf, переопределяют значения, установленные в разделе [main].
Конфигурационный файл /etc/yum.conf содержит разделы [repository], где repository это уникальный идентификатор репозитория. Разделы [repository] позволяют
определять отдельные репозитории yum.
Примечание: Не указывайте пользовательским репозиториям имена, используемые
репозиториями SberLinux, чтобы избежать конфликтов.
Добавление репозитория YUM
Сценарий:
1.
Чтобы определить новый репозиторий, сделайте следующие шаги:
Добавьте раздел [repository] в файл /etc/yum.conf.
Добавьте раздел [repository] в .repo файл в каталоге /etc/yum.repos.d/.
+
репозитории yum обычно предоставляют свой собственный .repo файл.
2.
Чтобы добавить репозиторий в свою систему и включить его, используйте:
yum-config-manager --add-repo repository_URL
Замените repository_url URL-адресом, указывающим на репозиторий.
Включение репозитория YUM
После того как в систему добавлено хранилище yum, включите его, чтобы
обеспечить установку и обновления.
Сценарий:
1.
Чтобы включить репозиторий, используйте:
yum-config-manager --enable repositoryID
Замените repositoryID на необходимый идентификатор репозитория.
63
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Отключение репозитория YUM
Отключите определенный репозиторий yum, чтобы предотвратить установку или
обновление определенных пакетов.
Сценарий:
Чтобы отключить репозиторий yum, используйте:
yum-config-manager --disable repositoryID
Замените repositoryID на необходимый идентификатор репозитория.
Настройка YUM
Информация о конфигурации для yum и связанных с ней утилит хранится в файле
/etc/yum.conf. Этот файл содержит один обязательный раздел [main], который
позволяет устанавливать параметры yum, и имеет глобальный эффект.
Просмотр текущих конфигураций YUM
Используйте следующий сценарий для просмотра текущих конфигураций yum.
Сценарий:
Для отображения текущих значений глобальных параметров yum, указанных в
разделе [main] файла /etc/yum.conf, используйте:
yum config-manager --dump
Настройка основных параметров YUM
Конфигурационный файл /etc/yum.conf содержит один раздел [main]. Пары ключзначение в этом разделе влияют на то, как yum работает и обрабатывает
репозитории.
Можно добавить дополнительные параметры в разделе [main].
Использование плагинов YUM
yum предоставляет плагины, которые расширяют и улучшают его работу.
Некоторые плагины устанавливаются по умолчанию.
Управление плагинами YUM
Сценарий:
64
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Файлы конфигурации подключаемого модуля всегда содержат раздел [main], в
котором enabled= параметр определяет, включен ли подключаемый модуль при
выполнении yum команд. Если этот параметр отсутствует, добавьте его в файл
вручную.
Каждый установленный подключаемый модуль имеет свой собственный
конфигурационный файл в каталоге /etc/dnf/plugins/. Включите или отключите
определенные параметры плагина в этих файлах.
Включение плагинов YUM
Следующий сценарий описывает, как отключить или включить все подключаемые
модули yum, отключить все подключаемые модули для определенной команды или
определенные подключаемые модули yum для одной команды.
Сценарий:
Чтобы включить все плагины yum:
1.
Убедитесь, что строка начинается с plugins= и присутствует в разделе [main]
в /etc/yum.conf файле.
2.
Установите значение plugins= для 1.
plugins=1
Отключение плагинов YUM
Чтобы отключить все плагины yum:
1.
Убедитесь, что строка начинается с plugins= и присутствует в разделе [main]
из /etc/yum.conf файла.
2.
Установите значение plugins= для 0.
plugins=0
Примечание: Отключать все плагины не рекомендуется. Некоторые плагины
предоставляют важные сервисы yum. В частности, плагины product-id и subscriptionmanager обеспечивают поддержку на основе сертификатов Content Delivery Network
(CDN). Глобальное отключение плагинов предусмотрено в качестве опции для
удобства и рекомендуется только при диагностике потенциальной проблемы с yum.
3.
Чтобы отключить все плагины yum для конкретной команды, добавьте –
noplugins опцию к команде:
65
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
yum --noplugins update
4.
Чтобы отключить определенные плагины yum для одной команды, добавьте –
disableplugin=plugin-name опцию к команде:
yum update --disableplugin=plugin-name
Замените plugin-name на необходимое имя плагина.
Systemd
Системный администратор взаимодействует с systemd системным и сервисным
менеджером для операционных систем Linux. Программный пакет systemd
предоставляет инструменты и службы для контроля и отчетности о состоянии
системы, для инициализации системы во время запуска и многое другое. Программный
пакет systemd предоставляет ряд функций, таких как:
•
•
•
параллельный запуск системных служб во время загрузки;
активацию демонов по требованию;
логику управления сервисом на основе зависимостей.
Типы юнитов systemd
В качестве представления системных ресурсов и сервисов systemd вводится понятие
systemd units (по тексту юнит, см. «Термины и определения»). Юнит systemd
выполняет или управляет определенной задачей, и является основным объектом для
управления systemd. Ниже приведены следующие примеры различных типов юнитов
systemd:
•
•
•
•
•
•
обслуживание;
цель;
устройство;
монтирование;
таймер;
другие типы, которые имеют отношение к системе инициализации.
Примечание: Для доступных типов юнитов, используйте:
systemctl -t help
Юнит systemd состоит из имени, типа и файла конфигурации, который определяет
задачу юнита. Файлы конфигурации юнитов расположены в одном из каталогов,
перечисленных в следующей таблице.
66
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Таблица. Расположение юнит-файлов systemd
Каталог
Описание
/usr/lib/systemd/system/
юнит-файлы systemd, распространяемые вместе с
установленными пакетами RPM.
/run/systemd/system/
юнит-файлы systemd, созданные во время выполнения. Этот
каталог имеет приоритет над каталогом с установленными
файлами юнит-файла.
/etc/systemd/system/
юнит-файл systemd, созданные, systemctl enable, а также юнитфайлы, добавленные для расширения службы. Этот каталог имеет
приоритет над каталогом с юнит-файлами среды выполнения
Systemd основные функции
Конфигурация systemd по умолчанию определяется во время компиляции,
конфигурация расположена в файле /etc/systemd/system.conf. Используйте этот файл
для переопределения выбранных значений юнитов systemd по умолчанию. Например,
чтобы переопределить значение ограничения времени ожидания по умолчанию,
которое установлено равным 90 секундам, используйте параметр
DefaultTimeoutStartSec для ввода требуемого значения в секундах.
DefaultTimeoutStartSec=required value
Управление системными службами с помощью systemctl
Управление юнит-файлом с помощью systemctl
Можно проверить любой юнит-файл, чтобы получить о нем подробную информацию и
проверить состояние службы, независимо от того, включена она или запущена.
Сценарий:
1.
Чтобы отобразить подробную информацию о юнит-файле, соответствующем
системной службе, введите:
systemctl status <name>.service
2.
Замените name на имя юнит-файла, который нужно проверить (например, gdm).
Эта команда отображает имя выбранного юнит-файла, за которым следует его
краткое описание и описание журналов, заполняемых root пользователем. Доступная
информация о сервисном юните представлена в таблице ниже.
Таблица. Доступная информация о сервисном юните
67
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Поле
Описание
Loaded
Информация о том, был ли загружен юнит, абсолютный путь к юнит-файлу и
примечание о том, включен ли юнит
Active
Информация о том, работает ли юнит, за которой следует отметка времени
Main PID
PID соответствующей системной службы, за которым следует ее имя
Status
Дополнительная информация о соответствующей системной службе
Process
Дополнительная информация о связанных процессах
CGroup
Дополнительная информация о связанных контрольных группах (cgroups)
3.
Чтобы убедиться, что работает только определенный сервисный юнит,
введите:
$ systemctl is-active <name>.service
4.
Чтобы определить, включен ли конкретный юнит, введите:
$ systemctl is-enabled <name>.service
Примечание: Оба юнита systemctl is-active и systemctl is-enabled возвращают статус
выхода 0, если указанный юнит-файл запущен или включен.
5.
Чтобы определить, какие службы заказываются для запуска до указанного
юнит-файла, введите:
systemctl list-dependencies --after <name>.service
Замените name на имя службы в команде.
6.
Чтобы определить, какие службы заказываются для запуска после указанной
единицы обслуживания, введите:
systemctl list-dependencies --before <name>.service
Замените name на имя службы в команде.
Сравнение сервисной утилиты с systemctl
systemctl - команда управления менеджером системы Systemd.
service - команда управления Upstart.
В таблице ниже представлено сравнение утилиты service с systemd.
68
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Таблица. Сравнение утилиты service с systemd
service
systemctl
Описание
service name start
systemctl start name.service
Запуск сервиса
service name stop
systemctl stop name.service
Остановка сервиса
service name restart
systemctl restart name.service
Рестарт сервиса
service name
condrestart
systemctl try-restart name.service
Рестарт сервиса только если он
запущен
service name reload
systemctl reload name.service
Перезагрузка конфигурации
service name status
systemctl status name.servicesystemctl is- Проверяет запущен ли сервис
active name.service
service –status-all
systemctl list-units –type service –all
Отображает статус всех сервисов
Список системных сервисов
Как и любое другое приложение, эти службы системных сервисов используют
системные ресурсы.
Сценарий:
•
Чтобы вывести список всех загруженных в данный момент юнит-файлов,
выполните следующую команду::
UNIT LOAD ACTIVE SUB DESCRIPTION
abrt-ccpp.service loaded active exited Install ABRT coredump hook
abrt-oops.service loaded active running ABRT kernel log watcher
abrtd.service loaded active running ABRT Automated Bug Reporting Tool
---systemd-vconsole-setup.service loaded active exited Setup Virtual Console
tog-pegasus.service loaded active running OpenPegasus CIM Server
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
69
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
46 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'
По умолчанию команда systemctl list-units отображает только активные объекты.
Для каждого файла юнит-файла отображается команда, где:
•
UNIT: его полное название.
•
LOAD: информация о том, был ли загружен юнит-файл.
•
ACTIVE или SUB: состояние активации его высокоуровневого и низкоуровневого
firewalld-filesystem.
•
DESCRIPTION: краткое описание.
•
Чтобы вывести список всех загруженных объектов независимо от их состояния,
введите следующую команду с параметром –all из командной строки или:
systemctl list-units --type service --all
•
Чтобы перечислить состояние (включено или отключено) всех доступных
сервисных устройств, введите:
$ systemctl list-unit-files --type service
UNIT FILE STATE
abrt-ccpp.service enabled
abrt-oops.service enabled
abrtd.service enabled
...
wpa_supplicant.service disabled
ypbind.service disabled
208 unit files listed.
Для каждого сервисного подразделения эта команда отображает:
70
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
UNIT FILE: его полное название.
STATE: информация о том, включен или отключен юнит-файл.
Отображение статуса системной службы
Чтобы отобразить юнит-файл, который systemd загрузила в систему, можно
использовать команду cat. Например, чтобы увидеть файл модуля демонапланировщика atd, можно ввести следующее:
systemctl cat atd.service
Output
[Unit]
Description=ATD daemon
[Service]
Type=forking
ExecStart=/usr/bin/atd
[Install]
WantedBy=multi-user.target
Положительные и отрицательные сервисные зависимости
Чтобы увидеть дерево зависимостей модуля, можно использовать команду listdependencies:
systemctl list-dependencies sshd.service
При этом отобразится иерархическая схема зависимостей, с которой необходимо
работать, чтобы запустить интересуемый модуль. Зависимости в этом контексте
включают те модули, которые требуются или желательны для модулей выше.
Output
sshd.service
─system.slice
─basic.target
├─microcode.service
├─sberlinux-autorelabel-mark.service
├─sberlinux-autorelabel.service
├─sberlinux-configure.service
├─sberlinux-dmesg.service
├─sberlinux-loadmodules.service
├─paths.target
71
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
├─slices.target
...
Рекурсивные зависимости отображаются только для модулей .target, которые
указывают состояние системы. Чтобы рекурсивно перечислить все зависимости,
добавьте флажок –all.
Чтобы отобразить обратные зависимости (модули, зависящие от указанного
модуля), можно добавить в команду флажок –reverse. Другие флажки –before и –after
могут быть использованы для отображения модулей, которые зависят от указанного
модуля, соответственно, перед ними и после.
Кроме systemd, существуют положительные и отрицательные зависимости между
службами. Запуск конкретной службы может потребовать запуска одной или
нескольких других служб (положительная зависимость) или остановки одной, или
нескольких служб (отрицательная зависимость).
Когда запускается новая служба, все зависимости systemd разрешаются
автоматически, без явного уведомления пользователя. Это означает, что если уже
запускается служба совместно с другой службой с отрицательной зависимостью,
первая служба автоматически останавливается.
Например, если запускается postfix служба и sendmail служба, systemd автоматически
останавливает postfix, поскольку эти две службы конфликтуют и не могут
запускаться на одном и том же порту.
Запуск системной службы
Запустите системную службу в текущем сеансе с помощью команды start.
Предварительные условия:
Права root пользователя.
Сценарий:
1.
Чтобы запустить выбранный юнит-файл, соответствующий системной
службе, введите следующую команду как root пользователь:
systemctl start <name>.service
2.
Замените name на имя юнит-файла, который запускаете (например,
httpd.service).
Остановка системной службы
Остановите системную службу в текущем сеансе, используйте команду stop.
72
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Предварительные условия:
Права root пользователя.
Сценарий:
1.
Чтобы остановить юнит-файл, соответствующий системной службе, введите
следующую команду, как root пользователь:
systemctl stop <name>.service
2.
Замените name на имя юнит-файла, который нужно остановить (например, на
bluetooth).
Перезапуск системной службы
Можно перезапустить системную службу в текущем сеансе с помощью команды
restart:
•
•
•
Остановите выбранный юнит-файл в текущем сеансе и немедленно запустите
его снова.
Перезапускайте юнит-файл только в том случае, если соответствующая
служба уже запущена.
Перезагрузите конфигурацию системной службы, не прерывая ее выполнение.
Предварительные условия:
Права root пользователя.
Сценарий:
1.
Перезапустите юнит-файл, соответствующий системной службе:
systemctl restart <name>.service
2.
Замените name на имя юнит-файла, который нужно перезапустить (например,
на httpd).
Примечание: Если выбранный юнит-файл не запущен, эта команда также запускает
его.
3.
Перезапустите юнит-файл, если соответствующая служба уже запущена:
systemctl try-restart <name>.service
4.
В качестве альтернативы, перезагрузите конфигурацию, не прерывая
выполнение службы:
73
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
systemctl reload <name>.service
Примечание: Системные службы, которые не поддерживают эту функцию,
игнорируют эту команду. Чтобы перезапустить такие службы, используйте команды
reload-or-restart или reload-or-try.
Включение системной службы
Можно настроить службу на автоматический запуск во время загрузки системы.
Команда enable считывает раздел [Install] выбранного юнит-файла и создает
соответствующие символические ссылки на файл / usr/lib/systemd/system/name.service
в /etc/systemd/system/ каталоге и его подкаталогах. Однако он не перезаписывает
ссылки, которые уже существуют.
Предварительные условия:
Права root пользователя.
Сценарий:
1.
Настройте юнит-файл, соответствующий системной службе, который будет
автоматически запускаться во время загрузки:
systemctl enable <name>.service
2.
Замените name на имя юнит-файла, который нужно включить (например, на
httpd).
3.
При необходимости повторно включите системный блок:
systemctl reenable <name>.service
Эта команда отключает выбранный юнит-файл и немедленно включает его снова.
Отключение системной службы
Можно запретить автоматический запуск юнит-файла во время загрузки. Команда
disable считывает раздел [Install] выбранного юнит-файла и удаляет
соответствующие символические ссылки на файл / usr/lib/systemd/system/name.service
из /etc/systemd/system/ каталога и его подкаталогов.
Предварительные условия:
Права root пользователя.
74
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Сценарий:
1.
Чтобы настроить юнит-файл, соответствующий системной службе, чтобы он
не запускался автоматически во время загрузки, введите команду, как root
пользователь:
systemctl disable <name>.service
2.
Замените name на имя юнит-файла, который нужно отключить (например, на
bluetooth).
3.
При необходимости замаскируйте любой юнит-файл и запретите его запуск
вручную или с помощью другой службы:
systemctl mask <name>.service
Эта команда заменяет файл / etc/systemd/system/name.service символической ссылкой
на /dev/null, делая фактический юнит-файл недоступным systemd.
4.
Чтобы отменить это действие и снять маску с юнит-файла, введите:
systemctl unmask <name>.service
Работа с целями systemd
Цели systemd действуют как точки синхронизации во время запуска системы. Файлы
целевых модулей, которые заканчиваются .target расширением файла, представляют
systemd цели. Назначением целевых модулей является группировка различных systemd
модулей через цепочку зависимостей.
Просмотр цели по умолчанию
Можно отобразить цель по умолчанию с помощью systemctl команды или просмотреть
/etc/systemd/system/default.target файл, представляющий целевую единицу по
умолчанию.
Процедура
•
Определите, какая целевая единица используется по умолчанию:
$ systemctl get-default
graphical.target
•
Определите цель по умолчанию, используя символическую ссылку:
75
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
$ ls -l /usr/lib/systemd/system/default.target
Просмотр целевых модулей
Можно отобразить все типы модулей или ограничить поиск текущими загруженными
целевыми модулями. По умолчанию команда отображает только активные модули.
Процедура:
•
Список всех загруженных модулей независимо от их состояния:
$ systemctl list-units --type target --all
•
В качестве альтернативы, перечислите все загруженные в данный момент
целевые устройства:
$ systemctl list-units --type target
UNIT
LOAD ACTIVE SUB DESCRIPTION
basic.target
loaded active active Basic System
cryptsetup.target loaded active active Encrypted Volumes
getty.target
loaded active active Login Prompts
graphical.target loaded active active Graphical Interface
local-fs-pre.target loaded active active Local File Systems (Pre)
local-fs.target loaded active active Local File Systems
multi-user.target loaded active active Multi-User System
network.target
loaded active active Network
paths.target
loaded active active Paths
remote-fs.target loaded active active Remote File Systems
sockets.target
loaded active active Sockets
sound.target
loaded active active Sound Card
spice-vdagentd.target loaded active active Agent daemon for Spice guests
swap.target
loaded active active Swap
sysinit.target
loaded active active System Initialization
time-sync.target loaded active active System Time Synchronized
timers.target
loaded active active Timers
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
17 loaded units listed.
76
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Изменение цели по умолчанию
Целевая единица по умолчанию представлена /etc/systemd/system/default.target
файлом. Следующая процедура описывает, как изменить цель по умолчанию с
помощью команды systemctl:
Процедура
1.
Чтобы определить целевой модуль по умолчанию:
## systemctl get-default
2.
Чтобы настроить систему на использование другого целевого устройства по
умолчанию:
## systemctl set-default multi-user.target
rm /etc/systemd/system/default.target
ln -s /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
Команда заменяет /etc/systemd/system/default.target файл символической ссылкой на
/usr/lib/systemd/system/name.target, где name — это имя целевого устройства,
которое нужно использовать. Замените multi-user на имя целевого устройства,
которое нужно использовать по умолчанию.
## systemctl set-default multi-user.target
rm /etc/systemd/system/default.target
ln -s /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
Общие цели для set-default команды (см.таблицу ниже)
basic
Целевой модуль, покрывающий базовую загрузку
rescue
Целевой модуль, который изолирует базовую систему и запускает
спасательную оболочку
multi-user
Целевой модуль для настройки многопользовательской системы
graphical
Целевой модуль для настройки графического экрана входа в
систему
emergency
Целевой модуль, который запускает аварийную оболочку на
главной консоли
sysinit
Целевой модуль, который извлекает службы, необходимые для
инициализации системы
Сделайте Reboot.
77
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## reboot
Дополнительные ресурсы:
С правочные страницы: systemd.special, bootup.
Изменение цели по умолчанию с помощью символической ссылки
Можно изменить цель по умолчанию, создав символическую ссылку на нужную цель.
Процедура:
1.
Определите целевой модуль по умолчанию:
## ls -l /etc/systemd/system/default.target
Обратите внимание, что в некоторых случаях /etc/systemd/system/default.target
ссылка может не существовать, и systemd ищет целевой модуль по умолчанию в
файлах /usr. В таких случаях определите целевой модуль по умолчанию с помощью
следующей команды:
## ls -l /usr/lib/systemd/system/default.target
2.
Удалите /etc/systemd/system/default.target ссылку:
## rm /etc/systemd/system/default.target
3.
Создайте символическую ссылку:
## ln -sf /usr/lib/systemd/system/graphical.target /etc/systemd/system/default.target
4.
Перезагрузите систему.
Этапы проверки
•
Проверьте только что созданный default.target (целевой модуль):
$ systemctl get-default
multi-user.target
78
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Изменение текущей цели
Когда установлен целевой модуль по умолчанию, текущая цель остается неизменной
до следующей перезагрузки. Если нужно изменить целевой модуль в текущем сеансе
без перезагрузки, используйте команду systemctl isolate.
Процедура:
•
Перейдите к другому целевому модулю в текущем сеансе:
## systemctl isolate multi-user.target
Эта команда запускает целевой модуль с именем multi-user и все зависимые модули, и
немедленно останавливает все остальные.
Замените multi-user на имя целевого устройства, которое нужно использовать по
умолчанию.
Этапы проверки:
Проверьте только что созданный default.target (целевой модуль):
$ systemctl get-default
multi-user.target
Загрузка в режиме восстановления
Режим восстановления обеспечивает удобную однопользовательскую среду и
позволяет восстанавливать систему в ситуациях, когда она не может завершить
обычный процесс загрузки. В режиме восстановления система пытается
смонтировать все локальные файловые системы и запустить некоторые важные
системные службы, но не активирует сетевые интерфейсы и не позволяет
одновременно войти в систему большему количеству пользователей.
Процедура:
Чтобы войти в режим восстановления, измените текущую цель в текущем сеансе:
## systemctl rescue
Broadcast message from root@localhost on pts/0 (Fri 2013-10-25 18:23:15 CEST):
The system is going down to rescue mode NOW!
79
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Примечание: Эта команда похожа на systemctl isolate rescue.target, но она также
отправляет информационное сообщение всем пользователям, которые в данный
момент вошли в систему. Чтобы предотвратить systemd отправку сообщения,
выполните следующую команду с параметром –no-wall командной строки:
## systemctl --no-wall rescue
Загрузка в аварийном режиме
Аварийный режим обеспечивает минимально возможную среду и позволяет
восстановить систему в ситуациях, когда система не может войти в аварийный
режим. В аварийном режиме система монтирует корневую файловую систему только
для чтения, не пытается монтировать какие-либо другие локальные файловые
системы, не активирует сетевые интерфейсы и запускает только несколько
основных служб.
Процедура
Чтобы войти в аварийный режим, измените текущую цель:
## systemctl emergency
Примечание: Эта команда похожа на systemctl isolate emergency.target, но она также
отправляет информационное сообщение всем пользователям, которые в данный
момент вошли в систему. Чтобы systemd не отправлял это сообщение, выполните
следующую команду с параметром –no-wall командной строки:
## systemctl --no-wall emergency
Завершение работы, приостановка и перевод системы в спящий режим
В этом разделе содержатся инструкции по завершению работы, приостановке или
переводу операционной системы в спящий режим.
Выключение системы
Для выключения системы можно либо воспользоваться systemctl утилитой напрямую,
либо вызвать эту утилиту через shutdown команду.
Преимущество использования shutdown команды:
•
Поддержка аргумента времени. Это особенно полезно для планового
технического обслуживания. Кроме того, у пользователей появляется больше
80
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
времени, чтобы отреагировать на предупреждение о запланированном
завершении работы системы.
Возможность отменить выключение.
Выключение системы с помощью команды shutdown
Следуя этой процедуре, используйте shutdown команду для выполнения различных
операций. Выключите систему и выключите машину в определенное время, или
выключите и остановите систему, не выключая машину, или отмените отложенное
выключение.
Предварительные условия:
Права root пользователя.
Процедура:
Чтобы выключить систему и выключить машину в определенное время, используйте
команду в следующем формате:
shutdown --poweroff hh:mm
Где hh:mm (чч:мм) — время в 24-часовом формате. Файл /run/nologin создается за 5
минут до выключения системы, чтобы предотвратить новые входы в систему.
Когда используется аргумент времени, к команде может быть добавлено
необязательное сообщение на экране.
В качестве альтернативы, чтобы выключить и остановить систему после задержки,
не выключая машину, используйте:
shutdown --halt +m
Где +m — время задержки в минутах. Ключевое слово now является псевдонимом для
+0.
Чтобы отменить отложенное завершение работы, используйте:
shutdown -c
Выключение системы с помощью команды systemctl
Следуя этой процедуре, используйте systemctl команду для выполнения различных
операций. Можно либо выключить систему и выключить машину, либо выключить и
остановить систему, не выключая машину.
81
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Предварительные условия:
Права root пользователя.
Процедура:
Чтобы завершить работу системы и выключить машину, используйте команду в
следующем формате:
systemctl poweroff
В качестве альтернативы, чтобы выключить и остановить систему, не выключая
машину, используйте:
systemctl halt
Примечание: По умолчанию запуск любой из этих команд приводит к тому, что
systemd отправляет информационное сообщение всем пользователям, которые в
данный момент вошли в систему. Чтобы systemd не отправил это сообщение,
запустите выбранную команду с параметром –no-wall командной строки.
Перезапуск системы
Можно перезапустить систему, выполнив эту процедуру.
Предварительные условия:
Права root пользователя.
Процедура:
Чтобы перезапустить систему, выполните следующую команду:
systemctl reboot
Примечание: По умолчанию эта команда заставляет systemd отправлять
информационное сообщение всем пользователям, которые в данный момент вошли в
систему. Чтобы systemd не отправил это сообщение, запустите эту команду с
параметром –no-wall командной строки.
Приостановка системы
Можно приостановить работу системы, выполнив процедуру, описанную ниже.
Предварительные условия:
82
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Права root пользователя.
Процедура:
Чтобы приостановить работу системы, выполните следующую команду:
systemctl suspend
Эта команда сохраняет состояние системы в ОЗУ и, за исключением модуля ОЗУ,
отключает питание большинства устройств в машине. Когда машина снова
включается, система восстанавливает свое состояние из ОЗУ без повторной
загрузки.
Поскольку состояние системы сохраняется в ОЗУ, а не на жестком диске,
восстановление системы из режима ожидания происходит значительно быстрее, чем
из режима гибернации (выключение системы при сохранении ее состояния). Однако
обратите внимание, что приостановленное состояние системы также уязвимо для
перебоев в подаче электроэнергии.
Спящий режим системы
Следуя этой процедуре, можно либо перевести систему в спящий режим, либо
перевести ее в спящий режим и приостановить работу системы.
Предварительные условия:
Права root пользователя.
Процедура:
Чтобы перевести систему в спящий режим, выполните следующую команду:
systemctl hibernate
Эта команда сохраняет состояние системы на жестком диске и выключает машину.
Когда машина снова включается, система восстанавливает свое состояние из
сохраненных данных без повторной загрузки.
Поскольку состояние системы сохраняется на жестком диске, а не в ОЗУ,
компьютеру не нужно подавать питание на модуль ОЗУ. Однако, как следствие,
восстановление системы из режима гибернации происходит значительно медленнее,
чем из режима ожидания.
В качестве альтернативы, чтобы перевести систему в спящий режим и
приостановить работу, выполните следующую команду:
83
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
systemctl hybrid-sleep
Обзор команд управления питанием с помощью systemctl
Можно использовать следующий список команд systemctl для управления питанием
системы.
Обзор команд управления питанием systemctl (см. таблицу ниже):
Команда systemctl
Описание
systemctl halt
Останавливает систему.
systemctl poweroff
Выключает систему.
systemctl reboot
Перезапускает систему.
systemctl suspend
Приостанавливает работу системы.
systemctl hibernate
Гибернирует систему.
systemctl hybrid-sleep
Гибернирует и приостанавливает работу системы.
Работа с юнит-файлами systemd
Эта глава включает описание юнитов systemd. В следующих разделах показано:
•
•
•
Создание пользовательских юнит-файлов.
Изменение существующих юнит-файлов.
Работа с юнитами systemd.
Юнит-файлы
Юнит-файл содержит директивы конфигурации, которые описывают сам юнит и
определяют его поведение. Несколько systemctl команд работают с юнитами в
фоновом режиме. Для более точной настройки юнитов системный администратор
должен отредактировать или создать юнит-файлы вручную. Расположение юнитов
systemd предоставляет три основных каталога, в которых хранятся юниты в
системе. Этот /etc/systemd/system/ каталог зарезервирован для юнитов, созданных
или настроенных системным администратором.
Имена юнит-файлов имеют следующую форму:
unit_name . type_extension
Здесь unit_name обозначает имя юнит-файла, а type_extension определяет тип юнитфайла.
84
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Например, в системе обычно есть sshd.service и sshd.socket устройство.
Юнит-файлы могут быть дополнены каталогом дополнительных файлов
конфигурации. Например, чтобы добавить пользовательские параметры
конфигурации в sshd.service, создайте sshd.service.d/custom.conf файл и вставьте в
него дополнительные директивы. Дополнительные сведения о каталогах
конфигурации см. в разделе «Изменение существующих юнит-файлов».
Многие разделы юнит-файла можно задать с помощью так называемых
спецификаторов юнита — строк с подстановочными знаками, которые динамически
заменяются параметрами юнита при загрузке юнит-файла. Это позволяет
создавать общие юнит-файлы, которые служат шаблонами для создания экземпляров
юнитов. См. раздел «Работа с юнитами systemd».
Файловая структура юнит-файлов
Юнит-файлы обычно состоят из трех разделов:
•
•
•
Раздел [Unit]— содержит общие опции, не зависящие от типа объекта. Эти
параметры предоставляют описание юнита, определяют поведение юнита и
устанавливают зависимости для других юнит-файлов.
Раздел [Unit type]— если юнит имеет директивы для конкретного типа, они
сгруппированы в разделе типов юнита. Например, служебные юнит-файлы
содержит [Service] раздел.
Раздел [Install]— содержит информацию об установке юнитов, используемых
systemctl enable и disable командами.
Важные параметры раздела [Unit]
В следующей таблице перечислены важные параметры раздела [Unit].
Вариант
Описание
Description
Содержательное описание устройства. Этот текст отображается, например,
в выводе systemctl status команды
Documentation
Предоставляет список URI, ссылающихся на документацию по устройству
After
Определяет порядок запуска юнитов. Блок запускается только после того, как
блоки, указанные в After, активны. В отличие от Requires, After явно не
активирует указанные юниты. Опция Before имеет противоположную
функциональность по сравнению с After. По своему действию Before аналогична
After, но вставляет юнит до содержимого элемента.
Requires
Настраивает зависимости от других юнитов. Блоки, перечисленные в Requires,
активируются вместе с блоком. Если какой-либо из требуемых блоков не
запускается, блок не активируется
85
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Вариант
Описание
Wants
Настраивает более слабые зависимости, чем Requires. Если какое-либо из
перечисленных устройств не запускается успешно, это не влияет на активацию
устройства. Это рекомендуемый способ установки зависимостей
пользовательских юнитов
Conflicts
Настраивает отрицательные зависимости, противоположные Requires
Полный список параметров, настраиваемых в разделе [Unit], см. в руководстве man
systemd.unit(5).
Важные параметры раздела [Service]
В следующей таблице перечислены важные параметры раздела [Service].
Вариант
Описание
Type
Настраивает тип запуска процесса, который влияет на функциональность
ExecStart и связанные параметры. Один из:
* simple— значение по умолчанию. Процесс, с которого начинается ExecStart,
является основным процессом службы.
* forking — Процесс, запущенный с помощью ExecStart, порождает дочерний
процесс, который становится основным процессом службы. Родительский
процесс завершается после завершения запуска.
* oneshot— этот тип похож на simple, но процесс завершается перед запуском
последующих единиц.
* dbus – Этот тип похож на simple, но последующие блоки запускаются только
после того, как основной процесс получит имя D-Bus.
* notify— Этот тип похож на simple, но последующие юниты запускаются только
после отправки уведомления через функцию sd_notify().
* idl e— аналогично simple, фактическое выполнение двоичного файла службы
откладывается до тех пор, пока не будут завершены все задания, что
позволяет избежать смешивания вывода состояния с выводом оболочки служб
ExecStart
Определяет команды или сценарии, которые должны выполняться при запуске
устройства. ExecStartPre и ExecStartPost указывает пользовательские команды,
которые будут выполняться до и после ExecStart. Type=oneshot позволяет
указать несколько пользовательских команд, которые затем выполняются
последовательно
ExecStop
Указывает команды или сценарии, которые должны выполняться при остановке
устройства
ExecReload
Указывает команды или сценарии, которые должны выполняться при
перезагрузке устройства
Restart
Если эта опция включена, служба перезапускается после выхода из ее процесса,
за исключением чистой остановки systemctl командой
86
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Вариант
Описание
RemainAfterExit
Если установлено значение True, служба считается активной, даже если все ее
процессы завершились. Значение по умолчанию — False. Эта опция особенно
полезна, если служба Type=oneshot настроена (oneshot означает, что сервис
должен выполнить разовую задачу и завершиться)
Полный список параметров, настраиваемых в разделе [Service], см. в руководстве man
systemd.service(5).
Важные параметры раздела [Install]
В следующей таблице перечислены важные параметры раздела [Install].
Вариант
Описание
Alias
Предоставляет разделенный пробелами список дополнительных имен для
устройства. Большинство systemctl команд, за исключением systemctl enable,
могут использовать псевдонимы вместо фактического имени устройства
RequiredBy
Список юнитов, которые зависят от включения. Когда этот юнит включен,
юниты, перечисленные в RequiredBy, становятся Require зависимыми
WantedBy
Список юнитов, слабо зависящих от включения. Когда этот юнит включен,
юниты, перечисленные в WantedBy, становятся Want зависимыми
Also
Задает список юнитов, которые необходимо установить или удалить вместе с
юнитом
DefaultInstance
Эта опция ограничена созданными юнитами и указывает экземпляр по
умолчанию, для которого включен юнит (см. раздел «Работа с юнитами
systemd»)
Создание пользовательских юнитов
Существует несколько вариантов использования создания юнитов с нуля: можно
запустить пользовательский демон, создать второй экземпляр какой-либо
существующей службы.
Процедура
Следующая процедура описывает общий процесс создания пользовательского
сервиса:
1.
Подготовьте исполняемый файл с пользовательской службой. Это может быть
специально созданный сценарий или исполняемый файл, предоставленный
поставщиком программного обеспечения. При необходимости подготовьте
файл PID для хранения постоянного PID для основного процесса
пользовательской службы. Также можно включить файлы среды для хранения
переменных оболочки для службы. Убедитесь, что исходный сценарий является
исполняемым (выполнив команду chmod a+x) и не интерактивным.
87
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
2.
Создайте юнит-файл в /etc/systemd/system/ каталоге и убедитесь, что он
имеет правильные права доступа к файлу. Выполните как root пользователь:
touch /etc/systemd/system/name.service
chmod 664 /etc/systemd/system/name.service
Замените name именем создаваемой службы. Обратите внимание, что файл должен
быть исполняемым.
3.
Откройте name.service файл, созданный на предыдущем шаге, и добавьте
параметры конфигурации службы. Существует множество параметров,
которые можно использовать в зависимости от типа службы.
Ниже приведен пример конфигурации устройства для сетевой службы:
[Unit]
Description=service_description
After=network.target
[Service]
ExecStart=path_to_executable
Type=forking
PIDFile=path_to_pidfile
[Install]
WantedBy=default.target
Где:
•
•
•
•
•
1.
service_description — это информативное описание, которое отображается в
файлах журнала и в выходных данных systemctl status команды.
Настройка After гарантирует, что служба запускается только после запуска
сети. Добавьте через пробел список других соответствующих служб или целей.
path_to_executable обозначает путь к фактическому исполняемому файлу
службы.
Type=forking используется для демонов, которые выполняют системный вызов
fork. Основной процесс службы создается с PID, указанным в path_to_pidfile.
WantedBy указывает цель или цели, под которыми должна быть запущена
служба. Думайте об этих целях как о замене старой концепции уровней
выполнения.
Сообщите systemd о существовании нового name.service файла, выполнив
следующую команду root пользователя:
88
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
systemctl daemon-reload
systemctl start name.service
Предупреждение: Всегда запускайте systemctl daemon-reload команду после создания
новых юнит-файлов или изменения существующих юнит-файл. В противном случае
команды systemctl start или systemctl enable могут завершиться ошибкой из-за
несоответствия между состояниями systemd и фактических служебных юнит-файлов
на диске. Обратите внимание, что в системах с большим количеством юнитов это
может занять много времени, так как состояние каждого юнита должно быть
сериализовано, а затем десериализовано во время перезагрузки.
Создание пользовательского юнит-файла с помощью второго экземпляра службы
sshd
Системным администраторам часто требуется настроить и запустить несколько
экземпляров службы. Это делается путем создания копий исходных файлов
конфигурации службы и изменения определенных параметров во избежание
конфликтов с основным экземпляром службы. В следующей процедуре показано, как
создать второй экземпляр службы.
Процедура
1.
Создайте копию sshd_config файла, который будет использоваться вторым
демоном:
## cp /etc/ssh/sshd{,-second}_config
2.
Отредактируйте sshd-second_config файл, созданный на предыдущем шаге,
чтобы назначить другой номер порта и файл PID второму демону:
Port 22220
PidFile /var/run/sshd-second.pid
Убедитесь, что выбранный порт не используется какой-либо другой службой. Файл
PID может не существовать до запуска службы, он создается автоматически при
запуске службы.
3.
Создайте копию юнит-файла systemd для sshd службы:
## cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/sshd-second.service
89
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
4.
•
Измените sshd-second.service, созданный на предыдущем шаге, следующим
образом:
Измените Description вариант:
Description=OpenSSH server second instance daemon
•
Добавьте sshd.service к службам, указанным в опции, чтобы второй экземпляр
запускался только после того, как первый уже запущен:
After=syslog.target network.target auditd.service sshd.service
•
•
Первый экземпляр sshd включает генерацию ключей, поэтому удалите строку
ExecStartPre=/usr/sbin/sshd-keygen.
Добавьте в команду -f /etc/ssh/sshd-second_config параметр sshd, чтобы
использовался альтернативный файл конфигурации:
ExecStart=/usr/sbin/sshd -D -f /etc/ssh/sshd-second_config $OPTIONS
•
После вышеуказанных изменений sshd-second.service должен выглядеть
следующим образом:
[Unit]
Description=OpenSSH server second instance daemon
After=syslog.target network.target auditd.service sshd.service
[Service]
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D -f /etc/ssh/sshd-second_config $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
•
При использовании SELinux добавьте порт для второго экземпляра sshd в порты
SSH, иначе второй экземпляр sshd будет отклонен для привязки к порту:
## semanage port -a -t ssh_port_t -p tcp 22220
90
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
Включите sshd-second.service, чтобы он запускался автоматически при
загрузке:
## systemctl enable sshd-second.service
•
•
Убедитесь, что служба sshd-second.service запущена с помощью systemctl status
команды.
Убедитесь, что порт включен правильно, подключившись к службе:
$ ssh -p 22220 user@server
•
Если межсетевой экран используется, убедитесь, что он правильно настроен,
чтобы разрешить подключения ко второму экземпляру sshd.
Поиск описания службы systemd
Можно найти описательную информацию о скрипте в строке, начинающейся с
#description. Используйте это описание вместе с именем службы Description в опции
раздела [Unit] юнит-файла. Заголовок LSB может содержать аналогичные данные в
строках #Short-Description и #Description.
Поиск зависимостей службы systemd
Заголовок LSB может содержать несколько директив, формирующих зависимости
между службами. Большинство из них можно перевести в параметры юнита systemd,
см. следующую таблицу.
Таблица. Параметры зависимости из заголовка LSB
Вариант
младшего бита
Описание
Эквивалент
файла юнита
Provides
Указывает имя загрузочного средства службы, на которое можно
ссылаться в других сценариях инициализации (с префиксом $). Это
больше не требуется, так как юнит-файлы относятся к другим
юнитам по их именам файлов
–
Required-Start
Содержит имена загрузочных средств необходимых служб. Имена
загрузочных средств заменяются именами юнит-файлов
соответствующих служб или целей, которым они принадлежат.
Например, в случае postfix Required-Start зависимость от $network
была преобразована в зависимость After от network.target
After, Before
Should-Start
Представляет собой более слабые зависимости, чем RequiredStart. Неудачные зависимости Should-Start не влияют на запуск
службы
After, Before
91
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Вариант
младшего бита
Required-Stop,
Should-Stop
Описание
Эквивалент
файла юнита
Сформировать отрицательные зависимости
Conflicts
Поиск целей службы по умолчанию
Строка, начинающаяся с #chkconfig, содержит три числовых значения. Наиболее
важным является первое число, представляющее уровни выполнения по умолчанию, на
которых запускается служба. Сопоставьте эти уровни запуска с эквивалентными
целями systemd. Затем перечислите эти цели в WantedBy опции в разделе [Install]
юнит-файла. Например, postfix, ранее он запускался на уровнях запуска 2, 3, 4 и 5, что
соответствует - multi-user.target и graphical.target. Обратите внимание, что
graphical.target зависит от multiuser.target, поэтому нет необходимости указывать
оба. Также можно найти информацию об уровнях запуска (по умолчанию и
запрещенных) в строках #Default-Start и #Default-Stop в заголовке LSB.
Два других значения, указанные в строке #chkconfig, представляют собой
приоритеты запуска и завершения работы сценария инициализации. Эти значения
интерпретируются systemd, если он загружает сценарий инициализации, но
эквивалентного юнит-файла нет.
Поиск файлов, используемых сервисом
Сценарии инициализации требуют загрузки библиотеки функций из специального
каталога и позволяют импортировать файлы конфигурации, среды и PID. Переменные
среды указываются в строке, начинающейся с #config в заголовке скрипта
инициализации, что соответствует EnvironmentFile параметру юнит-файла. Файл
PID, указанный в строке сценария инициализации #pidfilePIDFile, импортируется в
юнит-файл с параметром.
Ключевой информацией, которая не включена в заголовок сценария инициализации,
является путь к исполняемому файлу службы и, возможно, некоторые другие файлы,
необходимые для службы. В предыдущих версиях SberLinux сценарии инициализации
использовали оператор case Bash для определения поведения службы при действиях
по умолчанию, таких как start, stop или restart, а также при определенных
пользователем действиях. В следующем отрывке из postfix сценария инициализации
показан блок кода, который должен выполняться при запуске службы.
conf_check() {
[ -x /usr/sbin/postfix ] || exit 5
[ -d /etc/postfix ] || exit 6
[ -d /var/spool/postfix ] || exit 5
}
92
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
make_aliasesdb() {
if [ "$(/usr/sbin/postconf -h alias_database)" == "hash:/etc/aliases" ]
then
# /etc/aliases.db might be used by other MTA, make sure nothing
# has touched it since our last newaliases call
[ /etc/aliases -nt /etc/aliases.db ] ||
[ "$ALIASESDB_STAMP" -nt /etc/aliases.db ] ||
[ "$ALIASESDB_STAMP" -ot /etc/aliases.db ] || return
/usr/bin/newaliases
touch -r /etc/aliases.db "$ALIASESDB_STAMP"
else
/usr/bin/newaliases
fi
}
start() {
[ "$EUID" != "0" ] && exit 4
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 1
conf_check
# Start daemons.
echo -n $"Starting postfix: "
make_aliasesdb >/dev/null 2>&1
[ -x $CHROOT_UPDATE ] && $CHROOT_UPDATE
/usr/sbin/postfix start 2>/dev/null 1>&2 && success || failure $"$prog start"
RETVAL=$?
[ $RETVAL -eq 0 ] && touch $lockfile
echo
return $RETVAL
}
Расширяемость сценария инициализации позволила указать две пользовательские
функции conf_check() и make_aliasesdb(), которые вызываются из start()
функционального блока. При ближайшем рассмотрении в приведенном выше коде
упоминаются несколько внешних файлов и каталогов: основной исполняемый файл
службы /usr/sbin/postfix, каталоги /etc/postfix/ и /var/spool/postfix/ каталоги
конфигурации, а также /usr/sbin/postconf/ каталог.
systemd поддерживает только предопределенные действия, но позволяет выполнять
пользовательские исполняемые файлы с ExecStart, ExecStartPre, ExecStartPost, ExecStop
и ExecReload. Вместе со /usr/sbin/postfix вспомогательными скриптами
пользовательские исполняемые файлы выполняются при запуске службы.
Преобразование сложных сценариев инициализации требует понимания назначения
каждого оператора в сценарии. Некоторые операторы относятся к версии
93
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
операционной системы, поэтому их не нужно переводить. С другой стороны, в новой
среде могут потребоваться некоторые корректировки как в юнит-файле, так и в
исполняемом файле службы и вспомогательных файлах.
Изменение существующих юнит-файлов
Службы, установленные в системе, поставляются с юнит-файлами по умолчанию,
которые хранятся в /usr/lib/systemd/system/ каталоге. Системные администраторы
не должны изменять эти файлы напрямую, поэтому любая настройка должна
ограничиваться файлами конфигурации в /etc/systemd/system/ каталоге.
Процедура:
1.
•
•
2.
3.
В зависимости от степени требуемых изменений выберите один из следующих
подходов:
Создайте каталог для дополнительных файлов конфигурации в
/etc/systemd/system/. Этот метод рекомендуется для большинства случаев
использования. Это позволяет расширить конфигурацию по умолчанию
дополнительными функциями, при этом ссылаясь на исходный юнит-файл. Таким
образом, изменения юнита по умолчанию, введенные при обновлении пакета,
применяются автоматически.
Создайте копию исходного файла /usr/lib/systemd/system/ в /etc/systemd/system/ и
внесите в него изменения. Копия переопределяет исходный файл, поэтому
изменения, внесенные с обновлением пакета, не применяются. Этот метод
удобен для внесения значительных изменений юнитов, которые должны
сохраняться независимо от обновлений пакета.
Чтобы вернуться к конфигурации устройства по умолчанию, удалите
созданные пользователем файлы конфигурации в формате /etc/systemd/system/.
Чтобы применить изменения к юнитам без перезагрузки системы, выполните:
systemctl daemon-reload
Опция daemon-reload перезагружает все юнит-файлы и воссоздает все дерево
зависимостей, которое необходимо для немедленного применения любых изменений к
файлу юнитов. В качестве альтернативы можно добиться того же результата с
помощью следующей команды, которую необходимо выполнить как root пользователь:
init q
1.
Если измененный юнит принадлежит работающей службе, эту службу
необходимо перезапустить, чтобы принять новые настройки:
94
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
systemctl restart name.service
Например, чтобы расширить конфигурацию network службы, не изменяйте
/etc/rc.d/init.d/network файл initscript. Вместо этого создайте новый каталог
/etc/systemd/system/network.service.d/ и systemd файл. Затем поместите измененные
значения в systemd файл. Поэтому созданный каталог должен называться:
/etc/systemd/system/network.service.d/my_config.confsystemdnetworknetwork.servicenetwo
rk.service.d
Расширение unit конфигурации по умолчанию
В этом разделе описывается, как расширить юнит-файл по умолчанию
дополнительными параметрами конфигурации.
Процедура:
1.
Чтобы расширить юнит-файл по умолчанию дополнительными параметрами
конфигурации, сначала создайте каталог конфигурации в формате
/etc/systemd/system/. При расширении юнит-файла обслуживания выполните
следующую команду как root пользователь:
mkdir /etc/systemd/system/name.service.d/
Замените name именем службы, которую нужно расширить. Приведенный выше
синтаксис применим ко всем типам юнит-файлов.
2.
Создайте файл конфигурации в каталоге, созданном на предыдущем шаге
(обратите внимание, что имя файла должно заканчиваться суффиксом .conf):
touch /etc/systemd/system/name.service.d/config_name.conf
Замените config_name именем файла конфигурации. Этот файл придерживается
обычной структуры юнит-файла, поэтому все директивы должны быть указаны в
соответствующих разделах.
Например, чтобы добавить пользовательскую зависимость, создайте файл
конфигурации со следующим содержимым:
[Unit]
Requires=new_dependency
After=new_dependency
95
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Где new_dependency означает юнит-файл, который будет помечен как зависимость.
Другим примером является файл конфигурации, который перезапускает службу после
выхода из ее основного процесса с задержкой в 30 секунд:
[Service]
Restart=always
RestartSec=30
Рекомендуется создавать небольшие файлы конфигурации, ориентированные только
на одну задачу. Такие файлы можно легко перемещать или связывать с каталогами
конфигурации других служб.
1.
Чтобы применить изменения, внесенные в устройство, выполните команду root
пользователь:
systemctl daemon-reload
systemctl restart name.service
Пример. Расширение конфигурации httpd.service
Чтобы изменить юнит httpd.service таким образом, чтобы пользовательский
сценарий оболочки автоматически выполнялся при запуске службы Apache,
выполните следующие действия.
1.
Создайте каталог и пользовательский файл конфигурации:
mkdir /etc/systemd/system/httpd.service.d/
2.
При условии, что скрипт, который нужно запустить автоматически с Apache,
находится по адресу /usr/local/bin/custom.sh, вставьте в custom_script.conf файл
следующий текст: [Service]
ExecStartPost=/usr/local/bin/custom.sh
3.
Чтобы применить изменения юнита, выполните:
systemctl daemon-reload
systemctl restart httpd.service
Примечание: Файлы конфигурации из каталогов конфигурации /etc/systemd/system/ в
/usr/lib/systemd/system/. Поэтому, если файлы конфигурации содержат параметр,
который можно указать только один раз, например Description или ExecStart, значение
по умолчанию для этого параметра переопределяется. Обратите внимание, что в
выводе systemd-delta команды, такие единицы всегда помечаются как [EXTENDED],
хотя в целом некоторые параметры фактически переопределяются.
96
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Переопределение unit конфигурации по умолчанию
В этом разделе описывается, как переопределить конфигурацию юнит-файла по
умолчанию.
Процедура:
1.
Чтобы внести изменения, которые сохранятся после обновления пакета,
содержащего юнит-файл, сначала скопируйте файл в /etc/systemd/system/
каталог. Для этого выполните следующую команду как root пользователь:
cp /usr/lib/systemd/system/name.service /etc/systemd/system/name.service
Где name означает название юнит-файла, который нужно изменить. Приведенный
выше синтаксис применим ко всем типам юнит-файлов.
2.
Откройте скопированный файл в текстовом редакторе и внесите необходимые
изменения. Чтобы применить изменения, выполните как root пользователь:
systemctl daemon-reload systemctl restart name.service
Изменение лимита времени ожидания
Например, чтобы увеличить лимит тайм-аута для httpd сервиса:
Процедура:
1.
Скопируйте httpd юнит-файл в /etc/systemd/system/ каталог:
cp /usr/lib/systemd/system/httpd.service /etc/systemd/system/httpd.service
2.
Откройте файл /etc/systemd/system/httpd.service и укажите TimeoutStartUSec
значение в разделе [Service]:
...
[Service]
...
PrivateTmp=true
TimeoutStartSec=10
[Install]
WantedBy=multi-user.target
...
3.
Перезагрузите systemd демон:
97
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
systemctl daemon-reload
4.
При необходимости проверьте новое значение тайм-аута:
systemctl show httpd -p TimeoutStartUSec
Примечание: Чтобы глобально изменить лимит тайм-аута, введите
DefaultTimeoutStartSec в /etc/systemd/system.conf файле.
Мониторинг переопределенных юнит-файлов
В этом разделе описывается, как отобразить перечень переопределенных или
измененных юнит-файлов.
Процедура:
Чтобы отобразить обзор переопределенных или измененных юнит-файлов,
используйте следующую команду:
systemd-delta
Например, вывод приведенной выше команды может выглядеть следующим образом:
[EQUIVALENT] /etc/systemd/system/default.target → /usr/lib/systemd/system/default.target
[OVERRIDDEN] /etc/systemd/system/autofs.service → /usr/lib/systemd/system/autofs.service
--- /usr/lib/systemd/system/autofs.service 2014-10-16 21:30:39.000000000 -0400
+ /etc/systemd/system/autofs.service 2014-11-21 10:00:58.513568275 -0500
@@ -8,7 +8,8 @@
EnvironmentFile=-/etc/sysconfig/autofs
ExecStart=/usr/sbin/automount $OPTIONS --pid-file /run/autofs.pid
ExecReload=/usr/bin/kill -HUP $MAINPID
-TimeoutSec=180
+TimeoutSec=240
+Restart=Always
[Install]
WantedBy=multi-user.target
[MASKED] /etc/systemd/system/cups.service → /usr/lib/systemd/system/cups.service
[EXTENDED] /usr/lib/systemd/system/sssd.service →
/etc/systemd/system/sssd.service.d/journal.conf
98
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
4 overridden configuration files found.
Работа с юнитами systemd
Во время выполнения можно создать несколько юнит-файлов из одного файла
конфигурации шаблона. Символ @** используется для обозначения шаблона и
связывания с ним юнит-файлов. Созданные юнит-файлы можно запустить из другого
юнит-файла (с помощью Requires** или Wants опций) или с помощью systemctl start
команды. Созданные юнит-файлы называются следующим образом:
template_name@instance_name.service
Где template_name обозначает имя файла конфигурации шаблона. Замените
instance_name именем экземпляра юнит-файла. Несколько экземпляров могут
указывать на один и тот же файл шаблона с параметрами конфигурации, общими для
всех экземпляров юнит-файлов. Имя юнит-шаблона имеет вид:
[email protected]
Например, следующий Wants параметр в юнит-файле:
[email protected] [email protected]
Этот параметр заставляет systemd искать заданные юнит-файлы. Если такие
юниты не найдены, часть между @** и суффиксом типа игнорируется, и systemd**
ищет [email protected] файл, считывает из него конфигурацию и запускает службы.
Например, [email protected] шаблон содержит следующие директивы:
[Unit]
Description=Getty on %I
...
[Service]
ExecStart=-/sbin/agetty --noclear %I $TERM
...
Когда экземпляры [email protected] и [email protected] создаются из приведенного
выше шаблона, Description = разрешается как Getty на ttyA и Getty на ttyB.
99
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Важные спецификаторы systemd unit (юнитов)
Подстановочные знаки, называемые спецификаторами unit (также - юнитов), можно
использовать в любом файле конфигурации юнита. Спецификаторы юнитов заменяют
определенные параметры юнитов и интерпретируются во время выполнения. В
следующей таблице перечислены спецификаторы, которые особенно полезны для
юнит-шаблонов.
Таблица. Важные спецификаторы systemd юнитов
Спецификатор юнитов
Значение
Описание
%n
Полное наименование
юнита
Обозначает имя юнита с удаленным типсуффиксом. Для созданных юнитов %p означает
часть имени юнита перед символом “@”.
%i
Имя экземпляра
Является частью имени созданного объекта
между символом “@” и тип-суффиксом. Имеет то
же значение, но также заменяет запрещенные
символы для кодов ASCII.
%H
Имя хоста
Обозначает имя хоста работающей системы на
момент загрузки конфигурации устройства.
%t
Каталог рабочей среды
Представляет каталог рабочей среды, который
предназначен /run для root-пользователя или
представляет значение переменной
XDG_RUNTIME_DIR для непривилегированных
пользователей
Полный список спецификаторов юнитов см. в руководстве man systemd.unit(5).
Оптимизация systemd для сокращения времени загрузки
Существует список файлов systemd unit (юнитов), которые включены по умолчанию.
Системные службы, определенные этими юнит-файлами, автоматически
запускаются при загрузке, что влияет на время загрузки.
В этом разделе описывается:
•
•
Инструменты для проверки производительности загрузки системы.
Назначение юнитов systemd, включенных по умолчанию, и обстоятельства, при
которых можно безопасно отключить такие юниты systemd, чтобы сократить
время загрузки.
Проверка производительности загрузки системы
Чтобы проверить производительность загрузки системы, можно использовать
команду systemd-analyze. Эта команда имеет множество доступных опций. Однако в
100
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
этом разделе рассматриваются только те из них, которые могут быть важны для
настройки systemd, чтобы сократить время загрузки.
Предварительные условия
•
Прежде чем приступить к проверке systemd, чтобы настроить время загрузки,
можно просмотреть список всех включенных служб:
Сценарий:
Введите:
$ systemctl list-unit-files --state=enabled
Чтобы проанализировать общее время загрузки:
Сценарий:
Для получения общей информации о времени, затраченном на последнюю успешную
загрузку, используйте:
$ systemd-analyze
Чтобы проанализировать время инициализации юнит-файлов:
Сценарий:
Для получения информации о времени инициализации каждого юнита systemd
используйте:
$ systemd-analyze blame
В выходных данных перечислены устройства в порядке убывания в соответствии со
временем, затраченным на инициализацию во время последней успешной загрузки.
Для определения критических юнит-файлов:
Сценарий:
Чтобы определить юнит-файлы, инициализация которых заняла больше всего
времени при последней успешной загрузке, используйте:
$ systemd-analyze critical-chain
101
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
На выходе красным цветом выделяются юнит-файлы, которые критически
замедляют загрузку.
Рисунок. Выходные данные команды systemd-analyze critical-chain
Руководство по выбору служб, которые можно безопасно отключить
Если время загрузки слишком велико, можно сократить его, отключив некоторые
службы, включенные при загрузке по умолчанию.
Чтобы перечислить такие службы, выполните:
$ systemctl list-unit-files --state=enabled
Чтобы отключить службу, выполните:
systemctl disable service_name
Однако некоторые службы должны оставаться включенными, чтобы операционная
система была безопасной и функционировала.
Можно использовать приведенную ниже таблицу в качестве руководства по выбору
служб, которые можно безопасно отключить. В таблице перечислены все службы,
включенные по умолчанию при минимальной установке SberLinux, и для каждой службы
указано, можно ли безопасно отключить эту службу. В таблице также содержится
дополнительная информация об обстоятельствах отключения службы или о причине,
по которой не нужно отключать службу.
Таблица. Службы, включенные по умолчанию при минимальной установке SberLinux
102
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Название
службы
Возможность
отключения
auditd.service
ДА
Отключите auditd.service только в том случае, если не нужны
сообщения аудита от ядра. Если отключится auditd.service, файл
/var/log/audit/audit.log не создается. Следовательно, не получится
ретроактивно просмотреть некоторые часто просматриваемые
действия или события, такие как вход пользователя в систему,
запуск службы или смена пароля. Также обратите внимание, что
auditd состоит из двух частей: части ядра и самой службы.
Используя команду systemctl disable auditd, отключите только
службу, но не часть ядра. Чтобы полностью отключить
системный аудит, установите audit=0 в командной строке ядра.
Чтобы отобразить параметры командной строки ядра, заданные
для текущей загруженной системы, используйте любую из
следующих команд: sysctl -a sysctl -a
[email protected]
НЕТ
Конфигурация по умолчанию устанавливается во время
компиляции и настраивается только тогда, когда необходимо
отклониться от этих значений по умолчанию, поэтому ее
отключать не нужно. По умолчанию, [email protected] связан с
[email protected] . Запросы на вход запускаются динамически, когда
пользователь переключается на неиспользуемые виртуальные
терминалы, и этот параметр определяет, сколько учетных
записей gettys доступно VTS.
crond.сервис
ДА
Имейте в виду, что никакие элементы из crontab не будут
запускаться, если crond.service будет отключена
Дополнительная информация
dbusДА
org.fedoraproject
.FirewallD1.servic
e
Символическая ссылка на firewalld.service
dbusДА
org.freedesktop.
NetworkManager
.service
Символическая ссылка на NetworkManager.service
dbusДА
org.freedesktop.n
mdispatcher.servic
e
Символическая ссылка на NetworkManager-dispatcher.service
firewalld.service
ДА
Отключите firewalld.service только в том случае, если не нужен
межсетевой экран
[email protected]
НЕТ
Отключать небезопасно, поскольку доступ к консоли - это то, к
чему обращается пользователь, когда другие средства доступа к
серверу не работают
importstate.service
ДА
Отключите import-state.service только в том случае, если не нужно
загружаться из сетевого хранилища
103
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Название
службы
Возможность
отключения
Дополнительная информация
irqbalance.servic ДА
e
Отключите irqbalance.service только если задействован один
процессор. Не отключайте irqbalance.service в системах с
несколькими процессорами
kdump.servicedm ДА
odules.service
Эта служба не запускается до тех пор, пока
каталог/etc/rc.modules/etc/sysconfig/modules существует, а значит
он не запускается при минимальной установке SberLinux
lvm2monitor.service
ДА
Отключите lvm2-monitor.service только в том случае, если не
используете диспетчер логических томов (LVM)
microcode.servic
e
НЕТ
Не отключайте службу, поскольку она предоставляет обновления
программного обеспечения микрокода в CPU
NetworkManager ДА
dispatcher.servic
e
Отключите NetworkManager-dispatcher.service только в том
случае, если не нужны уведомления об изменениях конфигурации
сети (например, в статических сетях)
NetworkManager ДА
-waitonline.service
Отключите NetworkManager-wait-online.service только в том
случае, если не нужно рабочее сетевое подключение, доступное
сразу после загрузки. Если служба включена, система не завершит
загрузку до того, как сетевое подключение заработает. Это
может значительно увеличить время загрузки
NetworkManager ДА
.service
Отключите NetworkManager.service только в том случае, если не
нужно подключение к сети
nisДА
domainname.serv
ice
Отключите nis-domainname.service только в том случае, если не
используете службу сетевой информации (NIS)
rhsmcertd.service НЕТ
-
rngd.service
ДА
Отключите rngd.service только в том случае, если не нужно много
энтропии в системе или нет какого-либо аппаратного
генератора. Обратите внимание, что служба необходима в
средах, требующих высокой энтропии, таких как системы,
используемые для генерации сертификатов X.509 (например,
сервер FreeIPA)
rsyslog.service
ДА
Отключите rsyslog.service только в том случае, если не нужны
постоянные журналы или systemd-journald перешел в постоянный
режим
selinuxautorelabelmark.service
ДА
Отключите selinux-autorelabel-mark.service только в том случае,
если не используете SELinux
sshd.service
ДА
Отключите sshd.service только в том случае, если не нужны
удаленные входы в систему с помощью сервера OpenSSH.
104
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Название
службы
Возможность
отключения
sssd.service
ДА
Отключите sssd.service только в том случае, если нет
пользователей, которые входят в систему по сети (например, с
помощью LDAP или Kerberos). Рекомендуется отключить все sssd-*
юниты, если отключите sssd.service
syslog.service
ДА
Псевдоним для rsyslog.service
tuned.service
ДА
Отключите tuned.service только в том случае, если
действительно нужно использовать настройку
производительности
lvm2lvmpolld.socket
ДА
Отключите lvm2-lvmpolld.socket только в том случае, если не
используете диспетчер логических томов (LVM)
Дополнительная информация
dnfДА
makecache.timer
Отключите dnf-makecache.timer только в том случае, если не
нужно, чтобы метаданные пакета обновлялись автоматически
unboundanchor.timer
Отключите unbound-anchor.timer только в том случае, если не
требуется ежедневного обновления корневого ключа для якоря
доверия, отвечающего за расширение безопасности DNS (DNSSEC).
Этот якорь доверия используется несвязанным распознавателем
и библиотекой распознавателей для проверки DNSSEC
ДА
Чтобы найти дополнительную информацию о службе, выполните одну из следующих
команд:
$ systemctl cat <service_name>
$ systemctl help <service_name>
Команда systemctl cat предоставляет содержимое служебного файла, расположенного
в файле /usr/lib/systemd/system/, а также все применимые переопределения.
Применимые переопределения включают переопределения единичных файлов из файла
/etc/systemd/system/ или выпадающих файлов из unit.type.d справочника.
Для получения дополнительной информации введите:
systemctl help
Команда systemctl help показывает справочную страницу конкретной службы.
Дополнительные ресурсы:
Справочные страницы: systemctl(1), systemd(1), systemd-delta(1), systemd.directives(7),
systemd.unit(5), systemd.service(5), systemd.target(5), systemd.kill(5).
105
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Домашняя страница systemd
Введение в управление учетными записями пользователей и групп
Контроль пользователей и групп является ключевым элементом системного
администрирования SberLinux. Каждый пользователь SberLinux имеет отдельные
учетные данные для входа и может быть назначен различным группам для настройки
их системных привилегий.
Знакомство с пользователями и группами
Пользователь, создающий файл, является владельцем этого файла и владельцем
группы этого файла. Файлу назначаются отдельные разрешения на чтение, запись и
выполнение для владельца, группы и тех, кто находится за пределами этой группы.
Владелец файла может быть изменен только root пользователем. Права доступа к
файлу могут быть изменены как root пользователем, так и владельцем файла.
Обычный пользователь может изменить групповое право собственности на файл и на
группу, членом которой является.
Каждому пользователю присваивается уникальный числовой идентификационный
номер, называемый идентификатором пользователя (UID). Каждая группа связана с
идентификатором группы (GID). Пользователи внутри группы имеют одинаковые
разрешения на чтение, запись и выполнение файлов, принадлежащих этой группе.
Настройка зарезервированных идентификаторов пользователей и групп
Можно найти зарезервированные идентификаторы пользователей и групп в setup
пакете. Чтобы просмотреть зарезервированные идентификаторы пользователей и
групп, используйте:
cat /usr/share/doc/setup*/uidgid
Рекомендуется назначать идентификаторы новым пользователям и группам, начиная
с 5000, так как зарезервированный диапазон может увеличиться в будущем.
Чтобы идентификаторы, назначаемые новым пользователям, по умолчанию
начинались с 5000, измените параметры UID_MIN и GID_MIN в /etc/login.defs файле.
Сценарий:
Чтобы идентификаторы, назначаемые новым пользователям, по умолчанию
начинались с 5000:
1.
Откройте файл /etc/login.defs в редакторе по выбору.
2.
Найдите строки, которые определяют минимальное значение для
автоматического выбора идентификатора пользователя.
106
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## Min/max values for automatic uid selection in userad
#
UID_MIN 1000
3.
Измените UID_MIN значение, чтобы оно начиналось с 5000.
## Min/max values for automatic uid selection in useradd
#
UID_MIN 5000
4.
Найдите строки, которые определяют минимальное значение для
автоматического выбора GID.
## Min/max values for automatic gid selection in groupadd
#
GID_MIN 1000
5.
Измените GID_MIN значение, чтобы оно начиналось с 5000.
## Min/max values for automatic gid selection in groupadd
#
GID_MIN 1000
Динамически назначаемые UID и GID для обычных пользователей начинаются с 5000.
Примечание: Идентификаторы UID и GID пользователей и групп, созданные до
изменения значений UID_MIN и GID_MIN, не изменяются. Это позволит новой группе
пользователей иметь тот же идентификатор 5000+, что и UID и GID.
Частные группы пользователей
SberLinux использует конфигурацию системы user private group (UPG), что упрощает
управление группами UNIX. Личная группа пользователей создается всякий раз, когда
в систему добавляется новый пользователь. Частная группа пользователей имеет
то же имя, что и пользователь, для которого она была создана, и этот пользователь
является единственным членом частной группы пользователей.
UPG упрощают совместную работу над проектом между несколькими
пользователями. Кроме того, конфигурация системы UPG позволяет безопасно
устанавливать разрешения по умолчанию для вновь созданного файла или каталога,
поскольку это позволяет как пользователю, так и группе, в которую входит этот
пользователь, вносить изменения в файл или каталог.
107
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Список всех групп хранится в файле конфигурации /etc/group.
Управление пользователями из командной строки
Добавление нового пользователя из командной строки
В этом разделе описано, как использовать useradd утилиту для добавления нового
пользователя.
Предварительные условия:
Права root пользователя.
Процедура:
1.
Чтобы добавить нового пользователя, используйте команду:
useradd *options* *username*
2.
Замените эти параметры параметрами командной строки для useradd команды
и замените username именем пользователя.
Пример. Добавление нового пользователя:
Чтобы добавить пользователя maria с идентификатором пользователя 5000,
используйте:
+
useradd -u 5000 maria
Этапы проверки:
Чтобы проверить, добавлен ли новый пользователь, воспользуйтесь id утилитой.
## id maria
Результат:
uid=5000(maria) gid=5000 (maria) groups=5000(maria)
Дополнительные ресурсы:
Справочная страница: man useradd.
108
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Добавление новой группы из командной строки
В этом разделе описано, как использовать groupadd команду для добавления новой
группы.
Предварительные условия:
Права root пользователя.
Процедура:
1.
Чтобы добавить новую группу, используйте:
## groupadd options group-name
2.
Замените параметры параметрами командной строки для groupadd команды и
замените group-name именем группы.
Пример. Добавление новой группы:
Чтобы добавить группу sysadminsс идентификатором группы 5000, используйте:
+
groupadd -g 5000 sysadmins
Этапы проверки:
Чтобы проверить, добавлена ли новая группа, воспользуйтесь tail утилитой.
## tail /etc/group
Результат:
sysadmins:x:5000:
Дополнительные ресурсы:
Справочная страница: groupadd.
Добавление пользователя в дополнительную группу из командной строки
Можно добавить пользователя в дополнительную группу, чтобы управлять
разрешениями или разрешать доступ к определенным файлам или устройствам.
Предварительные условия:
Права root пользователя.
109
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Процедура:
1.
Чтобы добавить группу в дополнительные группы пользователя, используйте:
## usermod --append -G group-name username
Замените group-name на необходимое имя группы, а username на имя пользователя.
Пример. Добавление пользователя в дополнительную группу:
Чтобы добавить пользователя sysadmin в группу system-administrators, используйте:
usermod –append -G system-administrators sysadmin
Этапы проверки:
Чтобы убедиться, что новые группы добавлены в дополнительные группы
пользователя sysadmin, используйте:
## groups sysadmin
Выходные данные:
sysadmin : sysadmin system-administrators
Создание каталога группы
В соответствии с конфигурацией системы UPG можно применить разрешение setgroup identification (бит setgid) к каталогу. Этот бит setgid упрощает управление
групповыми проектами, которые совместно используют каталог. Когда бит setgid
применяется к каталогу, файлы, созданные в этом каталоге, автоматически
присваиваются группе, которой принадлежит этот каталог. Любой пользователь,
имеющий разрешение на запись и выполнение в этой группе, может создавать,
изменять и удалять файлы в каталоге.
В этом разделе описывается, как создавать групповые каталоги.
Предварительные условия:
Права root пользователя.
Процедура:
1.
Создайте каталог:
## mkdir directory-name
110
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
2.
Замените directory-name именем необходимого каталога.
3.
Создайте группу:
## groupadd group-name
4.
Замените group-name на название необходимой группы.
5.
Добавьте пользователей в группу:
## usermod --append -G group-name username
6.
Замените group-name на имя необходимой группы, а username - на имя
пользователя.
7.
Свяжите пользователя и группу, владеющих каталогом, с группой group-name:
## chown :group-name directory-name
8.
Замените group-name именем необходимой группы и замените directory-name
именем необходимого каталога.
9.
Установите разрешения на запись, чтобы разрешить пользователям создавать
и изменять файлы и каталоги, и установите setgid бит, чтобы это разрешение
применялось в каталоге с именем каталога:
## chmod g+rwxs directory-name
10. Замените directory-name именем каталога.
Теперь все члены group-name группы могут создавать и редактировать файлы в
directory-name каталоге. Вновь созданные файлы сохраняют право собственности
группы group-name.
Этапы проверки:
1.
Чтобы проверить правильность установленных разрешений, используйте:
## ls -ld directory-name
2.
Замените directory-name необходимым именем каталога.
Результат:
111
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
drwxrwsr-x. 2 root group-name 6 Nov 25 08:45 directory-name
Редактирование групп пользователей с помощью командной строки
Пользователь принадлежит к определенному набору групп, которые позволяют
логически собирать пользователей с одинаковым доступом к файлам и папкам. Можно
редактировать основные и дополнительные группы пользователей из командной
строки, чтобы изменить права доступа пользователя.
Основные и дополнительные группы пользователей
Группа - это организация, которая объединяет несколько учетных записей
пользователей для общей цели, такой как предоставление доступа к определенным
файлам.
В Linux группы пользователей могут выступать в качестве основных или
дополнительных. Основные и дополнительные группы обладают следующими
свойствами:
Первичная группа
•
•
У каждого пользователя всегда есть только одна основная группа.
Можно изменить основную группу пользователя.
Дополнительные группы
•
•
Можно добавить существующего пользователя в существующую
дополнительную группу, чтобы управлять пользователями с теми же правами
безопасности и доступа внутри группы.
Пользователи могут быть членами нулевой или нескольких дополнительных
групп.
Список основных и дополнительных групп пользователя
Можно составить список групп пользователей, чтобы узнать, к каким основным и
дополнительным группам они принадлежат.
Процедура:
Отобразите имена основной и любой дополнительной группы пользователя:
$ groups user-name
112
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Замените user-name именем пользователя. Если не укажете имя пользователя,
команда отобразит членство в группе для текущего пользователя. Первая группа это основная группа, за которой следуют необязательные дополнительные группы.
Пример. Список групп для пользователя maria:
$ groups maria
Выходные данные:
maria : maria wheel developer
Пользователь maria имеет основную группу maria и является членом дополнительных
групп wheel и developer.
Изменение основной группы пользователя
Можно изменить основную группу существующего пользователя на новую группу.
Предварительные условия:
Права root пользователя.
Новая группа должна существовать
Процедура:
1.
Измените основную группу пользователя:
## usermod -g group-name user-name
2.
Замените group-name именем новой основной группы и замените user-name
именем пользователя.
Примечание: Когда меняете основную группу пользователя, команда также
автоматически изменяет групповое право собственности на все файлы в домашнем
каталоге пользователя на новую основную группу. Установите вручную групповое
право собственности на файлы за пределами домашнего каталога пользователя.
Пример. Пример изменения основной группы пользователя:
Если пользователь maria принадлежит к основной группе maria1, и нужно изменить
основную группу пользователя на maria2, используйте:
usermod -g maria2 maria
Этапы проверки:
Убедитесь, что основная группа пользователя изменена:
113
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
$ groups maria
Выходные данные:
maria : maria2
Добавление пользователя в дополнительную группу из командной строки
Можно добавить пользователя в дополнительную группу, чтобы управлять
разрешениями или разрешать доступ к определенным файлам или устройствам.
Предварительные условия:
Права root пользователя.
Процедура:
1.
Чтобы добавить группу в дополнительные группы пользователя, используйте:
## usermod --append -G group-name username
2.
Замените group-name на имя группы, а username на имя пользователя.
Пример. Добавление пользователя в дополнительную группу
Чтобы добавить пользователя sysadmin в группу system-administrators, используйте:
usermod –append -G system-administrators sysadmin
Этапы проверки:
Чтобы убедиться, что новые группы добавлены в дополнительные группы
пользователя sysadmin, используйте:
## groups sysadmin
Выходные данные:
sysadmin : sysadmin system-administrators
Удаление пользователя из дополнительной группы
Можно удалить существующего пользователя из дополнительной группы, чтобы
ограничить его права доступа или доступ к файлам и устройствам.
114
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Предварительные условия:
Права root пользователя.
Процедура:
1.
Удалите пользователя из дополнительной группы:
## gpasswd -d user-name group-name
2.
Замените user-name именем пользователя и замените group-name именем
дополнительной группы.
Пример. Удаление пользователя из дополнительной группы
Если пользователь maria имеет основную группу maria2 и принадлежит к
дополнительным группам wheel и developers, и нужно удалить этого пользователя из
группы developers, используйте:
gpasswd -d maria developers
Этапы проверки:
Убедитесь, что пользователь maria удален из дополнительной группы
разработчиков:
$ groups maria
Выходные данные:
maria : maria2 wheel
Изменение всех дополнительных групп пользователя
Можно перезаписать список дополнительных групп, членом которых пользователь
должен остаться.
Предварительные условия:
•
•
Права root пользователя.
Дополнительные группы должны существовать.
Процедура:
1.
Перезапишите список дополнительных групп пользователя:
115
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## usermod -G group-names username
2.
Замените group-names на названия одной или нескольких дополнительных групп.
Чтобы добавить пользователя сразу в несколько дополнительных групп,
разделяйте названия групп запятыми без пробелов. Например: wheel, developer.
3.
Замените username именем пользователя.
Примечание: Если пользователь в данный момент является членом группы, которая
не указана, команда удаляет пользователя из группы.
Пример. Изменение списка дополнительных групп пользователя
Если пользователь maria имеет основную группу maria2 и принадлежит к
дополнительной группе wheel, и чтобы пользователь принадлежал еще к трем
дополнительным группам developer, sysadmin, и security, используйте:
usermod -G wheel,developer,sysadmin,security maria
Этапы проверки:
Убедитесь, что список дополнительных групп задан правильно:
## groups maria
Выходные данные:
maria : maria2 wheel developer sysadmin security
Дополнительные ресурсы:
Справочные страницы: man useradd(8), man passwd(1), и man usermod(8).
Управление доступом sudo
Системные администраторы могут предоставлять доступ sudo, чтобы разрешить
не root пользователям выполнять административные команды, которые обычно
зарезервированы для root пользователя. В результате не root пользователи могут
выполнять такие команды, не входя в учетную запись root пользователя.
Авторизация пользователей в sudoers
Файл /etc/sudoers указывает, какие пользователи могут запускать команды с
помощью команды sudo. Правила могут применяться как к отдельным пользователям,
так и к группам пользователей. Также можно использовать псевдонимы, чтобы
116
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
упростить определение правил для групп хостов, команд и даже пользователей.
Псевдонимы по умолчанию определены в первой части файла /etc/sudoers.
Когда пользователь пытается использовать права sudo доступа для выполнения
команды, которая не разрешена в файле /etc/sudoers, система записывает
содержащееся сообщение журнала username : user NOT in sudoers.
Файл /etc/sudoers по умолчанию содержит информацию и примеры авторизации.
Активируйте конкретное примерное правило, удалив символ # комментария из
начала строки. Раздел авторизации, относящийся к пользователю, отмечен
следующим введением:
### Next comes the main part: which users can run what software on
### which machines (the sudoers file can be shared between multiple
### systems).
Можно использовать следующий формат для создания новых sudoers авторизации и
изменять существующие авторизации:
username hostname=path/to/command
Где:
•
•
•
username- это имя пользователя или группы, например, user1 или %group1.
hostname - это имя хоста, к которому применяется правило.
path/to/command - это полный абсолютный путь к команде. Можно ограничить
пользователя выполнением команды только с определенными параметрами и
аргументами, добавив эти параметры после пути к команде. Если не указано
никаких параметров, пользователь может использовать команду со всеми
параметрами.
Можно заменить любую из этих переменных на ALL, чтобы применить правило ко всем
пользователям, хостам или командам.
Примечание: с правилами, снимающими любые ограничения, такими как ALL ALL=(ALL)
ALL, все пользователи могут запускать все команды как все пользователи на всех
хостах. Это может привести к угрозам безопасности.
Можно указать аргументы отрицательно, используя ! команду. Например, !root
используется для указания всех пользователей, кроме root пользователя. Обратите
внимание, что использование списков разрешений для разрешения определенных
пользователей, групп и команд более безопасно, чем использование списков
блокировки для запрета определенных пользователей, групп и команд. Используя
списки разрешений, блокируйте новых неавторизованных пользователей или группы.
117
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Примечание: Избегайте использования отрицательных правил для команд, поскольку
пользователи могут обойти такие правила, переименовав команды с помощью alias
команды.
Система считывает файл /etc/sudoers от начала до конца. Поэтому, если файл
содержит несколько записей для пользователя, записи применяются по порядку. В
случае конфликтующих значений система использует последнее совпадение, даже
если это не самое конкретное совпадение.
Предпочтительный способ добавления новых правил sudoers - это создание новых
файлов в каталоге /etc/sudoers.d/ вместо ввода правил непосредственно в файл
/etc/sudoers. Это связано с тем, что содержимое этого каталога сохраняется во
время обновления системы. Кроме того, легче исправить любые ошибки в отдельных
файлах, чем в файле /etc/sudoers. Система считывает файлы в каталоге
/etc/sudoers.d, когда доходит до следующей строки в файле /etc/sudoers:
#includedir /etc/sudoers.d
Обратите внимание, что номерной знак # в начале этой строки является частью
синтаксиса и не означает, что строка является комментарием. Имена файлов в
этом каталоге не должны содержать .(точки) и не должны заканчиваться ~(тильдой).
Предоставление доступа sudo пользователю
Системные администраторы могут предоставлять sudo доступ, позволяющий не root
пользователям выполнять административные команды. Команда sudo
предоставляет пользователям административный доступ без использования пароля
root пользователя.
Когда пользователям необходимо выполнить административную команду, они могут
это сделать с помощью команды sudo. Эта команда дает пользователю некоторые
права root пользователя.
Существуют следующие ограничения:
•
•
Только пользователи, перечисленные в конфигурационном файле /etc/sudoers,
могут использовать sudo команду.
Команда выполняется в командной строке пользователя, а не в командной
строке root пользователя.
Предварительные условия:
Права root пользователя.
Процедура:
1.
Как пользователь root, откройте /etc/sudoers файл.
118
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## visudo
Файл /etc/sudoers определяет политики, применяемые командой sudo.
2.
В файле /etc/sudoers найдите строки, которые предоставляют доступ sudo
пользователям в административной wheel группе.
### Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
3.
Убедитесь, что строка, начинающаяся с %wheel, не имеет перед собой символа
комментария #.
4.
Сохраните все изменения и выйдите из редактора.
5.
Добавьте пользователей, которым нужно предоставить доступ sudo, в
административную группу wheel.
6.
Замените username на имя пользователя.
## usermod --append -G wheel username
Этапы проверки:
Убедитесь, что пользователь добавлен в административную группу wheel:
## id username
uid=5000(username) gid=5000(_username) groups=5000(username),10(wheel)
Разрешение непривилегированным пользователям запускать определенные команды
Можно настроить политику, которая позволяет непривилегированному
пользователю запускать определенную команду на определенной рабочей станции.
Чтобы настроить эту политику, необходимо создать и отредактировать файл в
справочник sudoers.d.
Предварительные условия:
Права root пользователя.
Процедура:
1.
Как root, создайте новый sudoers.d каталог под /etc/:
119
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## mkdir -p /etc/sudoers.d/
2.
Создайте новый файл в каталоге /etc/sudoers.d:
## visudo -f /etc/sudoers.d/file-name
3.
Замените file-name именем файла, который нужно создать. Файл откроется
автоматически.
4.
Добавьте следующую строку во вновь созданный файл:
username hostname = /path/to/the/command
5.
Замените username на имя пользователя.
6.
Замените hostname именем хоста.
7.
Замените /path/to/the/command на абсолютный путь к команде (например, на
/usr/bin/yum).
8.
Сохраните все изменения и выйдите из редактора.
Пример. Предоставление непривилегированному пользователю возможности
устанавливать программы с помощью yum
Разрешите пользователю maria устанавливать программы на рабочую станцию
localhost.localdomain с помощью утилит yum с привилегиями sudo, используйте:
1.
Как root, создайте новый каталог sudoers.d в /etc/:
## mkdir -p /etc/sudoers.d/
2.
Создайте новый файл в каталоге /etc/sudoers.d:
## visudo -f /etc/sudoers.d/maria
Файл откроется автоматически.
3.
Добавьте файл /etc/sudoers.d/maria в следующую строку:
maria localhost.localdomain = /usr/bin/yum
120
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
4.
Убедитесь, что два пути к командам разделены , (запятой), за которой следует
пробел.
5.
При необходимости, чтобы получать уведомления по электронной почте
каждый раз, когда пользователь maria пытается использовать привилегии sudo,
добавьте в файл следующие строки:
Defaults mail_always
Defaults mailto="[email protected]"
6.
Чтобы проверить, может ли пользователь maria выполнить yum команду с
привилегиями sudo, переключите учетную запись:
## su maria 7.
Введите sudo yum команду:
$ sudo yum
[sudo] password for maria:
8.
Введите пароль sudo для пользователя maria. Система отобразит список
команд yum и разделов (опций):
...
usage: yum [options] COMMAND
...
Если получено сообщение maria is not in the sudoers file. This incident will be reported.,
значит настройка была выполнена неправильно. Убедитесь, что процедура root
выполнена правильно и по инструкциям.
Изменение и сброс root пароля
Если существующий root-пароль забыт или больше не удовлетворяет пользователя,
можно изменить или сбросить этот пароль, как с root полномочиями, так и без rootполномочий.
Изменение пароля root в качестве пользователя root
В этом разделе описывается, как использовать команду passwd для изменения пароля
root от имени пользователя root.
Предварительные условия:
121
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Права root пользователя.
Процедура:
Чтобы изменить пароль root, используйте:
## passwd
Изменение или сброс забытого пароля root в качестве пользователя без полномочий
root
В этом разделе описывается, как использовать команду passwd для изменения или
сброса забытого пароля root в качестве пользователя, не являющегося rootпользователем.
Предварительные условия:
•
•
Можно войти в систему как обычный пользователь, без root прав.
Получена административная wheel группа.
Процедура:
Чтобы изменить или сбросить пароль root от имени пользователя, не являющегося
пользователем root, принадлежащего к wheel группе, используйте:
$ sudo passwd root
Будет предложено ввести текущий не root пароль, прежде чем появится возможность
изменить пароль root.
Сброс пароля root при загрузке
Если не получается войти в систему, как обычный пользователь или отсутствует
непринадлежность к административной группе wheel, можно сбросить пароль root
при загрузке, переключившись в специализированную среду chroot jail.
Процедура:
1.
Перезагрузите систему и на экране загрузки GRUB 2 нажмите клавишу e, чтобы
прервать процесс загрузки. Появятся параметры загрузки ядра.
load_video
set gfx_payload=keep
insmod gzio
linux ($root)/vmlinuz-4.18.0-80.e18.x86_64 root=/dev/mapper/sberlinux-root ro crash\
122
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
kernel=auto resume=/dev/mapper/sberlinux-swap rd.lvm.lv/swap rhgb quiet
initrd ($root)/initramfs-4.18.0-80.e18.x86_64.img $tuned_initrd
2.
Перейдите к концу строки, которая начинается с linux.
linux ($root)/vmlinuz-4.18.0-80.e18.x86_64 root=/dev/mapper/sberlinux-root ro crash\
kernel=auto resume=/dev/mapper/sberlinux-swap rd.lvm.lv/swap rhgb quiet
3.
Нажмите Ctrl+e, чтобы перейти к концу строки.
4.
Добавьте rd.break в конец строки, которая начинается с linux.
linux ($root)/vmlinuz-4.18.0-80.e18.x86_64 root=/dev/mapper/sberlinux-root ro crash\
kernel=auto resume=/dev/mapper/sberlinux-swap rd.lvm.lv/swap rhgb quiet rd.break
5.
Нажмите Ctrl+x для запуска системы с измененными параметрами. В switch_root
появится подсказка.
6.
Перемонтируйте файловую систему как доступную для записи:
mount -o remount,rw /sysroot
Файловая система в каталоге монтируется как доступная только для чтения/
sysroot. Переустановка файловой системы как доступной для записи позволяет
изменить пароль.
7.
Войдите в среду chroot:
chroot /sysroot
Появится подсказка sh-4.4#.
8.
Сбросьте root пароль:
passwd
9.
Следуйте инструкциям, отображаемым в командной строке, чтобы завершить
смену root пароля.
10. Включите процесс повторной маркировки SELinux при следующей загрузке
системы:
123
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
touch /.autorelabel
11. Выйдите из chroot окружения:
exit
12. Выйдите из командной строки switch_root:
exit
13. Дождитесь завершения процесса повторной маркировки SELinux. Обратите
внимание, что повторная маркировка большого диска может занять много
времени. По завершении процесса система автоматически перезагружается.
Этапы проверки:
1.
Чтобы убедиться, что пароль root успешно изменен, войдите в систему как
обычный пользователь и откройте терминал.
2.
Запустите интерактивную оболочку от имени пользователя root:
$ su
3.
Введите свой новый пароль root.
4.
Выведите имя пользователя, связанное с текущим действующим
идентификатором пользователя:
whoami
Результат:
root
Управление правами доступа к файлам
Права доступа к файлам определяют способность учетных записей пользователей и
групп просматривать, изменять, получать доступ и выполнять содержимое файлов и
каталогов.
Каждый файл или каталог имеет три уровня владения:
124
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
•
Пользователь-владелец (u).
Владелец группы (g).
Другие (o).
Каждому уровню владения могут быть назначены следующие разрешения:
•
•
•
Чтение (r).
Запись (w).
Выполнение (x).
Обратите внимание, что разрешение на выполнение для файла позволяет выполнить
этот файл. Разрешение на выполнение для каталога позволяет получить доступ к
содержимому каталога, но не выполнить его.
Когда создается новый файл или каталог, ему автоматически назначается набор
разрешений по умолчанию. Разрешения по умолчанию для файла или каталога зависят
от двух факторов:
•
•
Базовое разрешение.
Маска режима создания пользовательского файла (umask).
Базовые права доступа к файлам
Разрешение
Символьное значение
Восьмеричное значение
Отсутствие разрешения
—
0
Выполнение
–x
1
Запись
-w-
2
Запись и выполнение
-wx
3
Чтение
r–
4
Чтение и выполнение
r-x
5
Чтение и запись
rw-
6
Чтение, запись, выполнение
rwx
7
Базовым разрешением для каталога является 777(drwxrwxrwx), которое
предоставляет всем разрешения на чтение, запись и выполнение. Это означает, что
владелец каталога, группа и другие пользователи могут просматривать содержимое
каталога, создавать, удалять и редактировать элементы внутри каталога, а также
переходить в него.
Обратите внимание, что отдельные файлы в каталоге могут иметь свои
собственные разрешения, которые могут помешать редактировать их, несмотря на
неограниченный доступ к каталогу.
125
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Базовым разрешением для файла является 666(-rw-rw-rw-), оно предоставляет всем
права на чтение и запись. Это означает, что владелец файла, группа и другие
пользователи могут читать и редактировать файл.
Пример. Разрешения для файла
Если файл имеет следующие разрешения:
$ ls -l
-rwxrw----. 1 sysadmins sysadmins 2 Mar 2 08:43 file
Где:
- (одинарное тире) указывает, что это файл.
rwx указывает, что владелец файла имеет разрешения на чтение, запись и
выполнение файла.
rw- указывает, что группа имеет разрешения на чтение и запись, но не на
выполнение файла.
— указывает, что другие пользователи не имеют прав на чтение, запись или
выполнение файла.
. (точка) указывает, что для файла задан контекст безопасности SELinux.
Пример. Разрешения для каталога
Если каталог имеет следующие разрешения:
$ ls -dl directory
drwxr-----. 1 sysadmins sysadmins 2 Mar 2 08:43 directory
d указывает, что это каталог.
rwx указывает, что владелец каталога имеет разрешения на чтение, запись и доступ
к содержимому каталога.
Как владельцу каталога, можно перечислять элементы (файлы, подкаталоги) внутри
каталога, получать доступ к содержимому этих элементов и изменять их.
r– указывает, что группа имеет разрешения на чтение, но не на запись или доступ к
содержимому каталога.
Как члену группы, которой принадлежит каталог, можно перечислить элементы
внутри каталога. Без получения доступа к информации об элементах в каталоге или
возможности их изменить.
— указывает, что другие пользователи не имеют прав на чтение, запись или доступ
к содержимому каталога.
126
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Как лицу, не являющееся владельцем пользователя или группы каталога,
отсутствует возможность перечислять элементы в каталоге, получать доступ к
информации об этих элементах или изменять их.
. (точка) указывает, что для каталога установлен контекст безопасности SELinux.
Примечание: Базовое разрешение, которое автоматически назначается файлу или
каталогу, и не является разрешением по умолчанию в конце файла или каталога.
Когда создается файл или каталог, базовое разрешение изменяется с помощью
umask. Комбинация базового разрешения и umask создает разрешение по умолчанию
для файлов и каталогов.
Маска пользовательского режима создания файлов
Маска режима создания пользовательского файла (umask) - переменная, управляющая
тем, как устанавливаются права доступа к файлам для вновь созданных файлов и
каталогов. umask автоматически удаляет разрешения из базового значения
разрешений, чтобы повысить общую безопасность системы Linux. Маска создания
файла (umask) может быть установлена с использованием восьмеричной или
символической записи.
Число
Символьное значение
Восьмеричное значение
Чтение, запись и выполнение
rwx
0
Чтение и запись
rw-
1
Чтение и выполнение
r-x
2
Чтение
r–
3
Запись и выполнение
-wx
4
Запись
-w-
5
Выполнение
–x
6
Отсутствие разрешения
—
7
umask для обычного пользователя это 0002. Значение по умолчанию umask для root
пользователь является 0022.
Первая цифра в umask представляет специальные разрешения (sticky bit,). Последние
три цифры umask представляют разрешения, которые удалены у пользователявладельца (u), владелец группы (g), и другие (o) соответственно.
127
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Права доступа к файлам по умолчанию
Числа по умолчанию устанавливаются автоматически для всех вновь создаваемых
файлов и каталогов. Значение разрешений по умолчанию определяется путем
применения umask к базовому разрешению.
Числовое обозначение
Символьное обозначение Описание
400
-r——–
Владелец файла может только читать файл. Для
всех остальных все действия с файлом запрещены
644
-rw-r–r–
Все пользователи могут читать файл. Владелец
может изменять файл
660
-rw-rw—-
Владелец и группа могут читать и изменять
файл. Для всех остальных все действия с файлом
запрещены
664
-rw-rw-r–
Все могут читать файл. Владелец и группа могут
изменять
666
-rw-rw-rw-
Все могут читать и изменять файл
700
-rwx——
Владелец может читать, изменять и запускать
файл. Для всех остальных все действия с файлом
запрещены
744
-rwxr–r–
Все могут читать файл. Владелец может также
изменять и запускать файл
755
-rwxr-xr-x
Все могут читать и запускать файл. Владелец
может также изменять файл
777
-rwxrwxrwx
Все пользователи могут читать, изменять и
записывать файл
Пример. Разрешения по умолчанию для каталога, созданного обычным пользователем
Когда обычный пользователь создает новый каталог (directory), для umask
устанавливается значение 002(rwxrwxr-x), а для базовых разрешений созданного
каталога устанавливается значение 777(rwxrwxrwx). Каталог получает разрешения
по умолчанию и для 775(drwxrwxr-x). Полученные, в результате этого, разрешения
представлены в таблице ниже.
Параметр
Символьное значение
Восьмеричное значение
Базовое разрешение
rwxrwxrwx
777
umask
rwxrwxr-x
002
Разрешение по умолчанию
rwxrwxr-x
775
128
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Это означает, что владелец каталога и группа могут перечислять содержимое
каталога, создавать, удалять и редактировать элементы внутри каталога, а также
переходить в него. Все остальные пользователи могут только перечислить
содержимое каталога и перейти в него.
По соображениям безопасности обычные файлы не могут иметь разрешение на
выполнение по умолчанию, даже если для umask установлено значение 000(rwxrwxrwx ).
Однако каталоги могут быть созданы с разрешениями на выполнение.
Изменение прав доступа к файлам с использованием символьных значений
Можно использовать утилиту chmod с символьными значениями (комбинация букв и
знаков) для изменения прав доступа для файла или каталога.
Можно назначить следующие разрешения:
•
•
•
Чтение (r)
Запись (w)
Выполнение (x)
Разрешения могут быть назначены следующим уровням владения:
•
•
•
•
Пользователь-владелец (u)
Владелец группы (g)
Другое (o)
Все (а)
Чтобы добавить или удалить разрешения, используйте следующие знаки:
•
•
•
+ знак плюс - чтобы добавить разрешения поверх существующих разрешений;
- знак минус - чтобы удалить разрешения из существующего разрешения;
= знак равно - чтобы удалить существующие разрешения и явно определить
новые.
Процедура:
1.
Чтобы изменить разрешения для файла или каталога, используйте:
$ chmod <level><operation><permission> file-name
2.
Замените level на уровень владения, для которого нужно установить
разрешения. Замените operation на один из знаков. Замените permission на
разрешения, которые нужно назначить. Замените file-name именем файла или
каталога. Например, чтобы предоставить всем права на чтение, запись и
выполнение (rwx) my-script.sh, используйте команду chmod a=rwx my-script.sh.
Этапы проверки:
129
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Чтобы просмотреть разрешения для определенного файла, используйте:
$ ls -l file-name
Замените file-name именем файла.
2.
Чтобы просмотреть разрешения для определенного каталога, используйте:
$ ls -dl directory-name
Замените directory-name именем каталога.
3.
Чтобы просмотреть разрешения для всех файлов в определенном каталоге,
используйте:
$ ls -l directory-name
Замените directory-name именем каталога.
Пример. Изменение разрешений для файлов и каталогов
•
1.
Чтобы изменить права доступа к файлам my-file.txt от -rw-rw-r–до -rw——,
используйте:
Отобразите текущие разрешения для my-file.txt
$ ls -l my-file.txt
-rw-rw-r--. 1 username username 0 Feb 24 17:56 my-file.txt
2.
Удалите разрешения на чтение, запись и выполнение (rwx) файла у владельца
группы (g) и других пользователей (o):
$ chmod перейти= my-file.txt
Обратите внимание, что любое разрешение, которое не указано после знака
равенства (=), автоматически запрещается.
3.
Убедитесь, что разрешения для my-file.txt были установлены правильно:
$ ls -l my-file.txt
-rw-------. 1 username username 0 Feb 24 17:56 my-file.txt
Чтобы изменить права доступа к файлам my-directory от drwxrwx— до drwxrwxr-x,
используйте:
130
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Отобразите текущие разрешения для my-directory:
$ ls -dl my-directory
drwxrwx---. 2 username username 4096 Feb 24 18:12 my-directory
2.
Добавьте доступ на чтение и выполнение для всех пользователей:
$ chmod o+rx my-directory
3.
Убедитесь, что разрешения для my-directory и его содержимое были
установлены правильно:
$ ls -dl my-directory
drwxrwxr-x. 2 username username 4096 Feb 24 18:12 my-directory
Изменение прав доступа к файлам с помощью восьмеричных значений
Можно использовать утилиту chmod с восьмеричными значениями (числами) для
изменения прав доступа к файлам для файла или каталога.
Процедура:
Чтобы изменить права доступа к файлам для существующего файла или каталога,
используйте:
$ chmod octal_value file-name
Замените file-name именем файла или каталога. Замените octal_value на
восьмеричное значение.
Управление umask
Можно использовать umask утилиту для отображения, установки или изменения
текущего значения umask или значения по умолчанию.
Отображение текущего значения umask
Можно использовать umask утилиту для отображения текущего значения umask в
символьном или восьмеричном режиме.
Процедура:
1.
Чтобы отобразить текущее значение umask в символьном режиме, используйте:
131
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
$ umask -S
2.
Чтобы отобразить текущее значение umask в восьмеричном режиме,
используйте:
$ umask
Примечание: При отображении umask в восьмеричном режиме он отображается в
виде четырехзначного числа (0002 или 0022). Первая цифра umask представляет
специальный бит (sticky bit, SGID bit, or SUID bit). Если первая цифра установлена
равной 0, специальный бит не устанавливается.
Отображение umask bash по умолчанию
Существует несколько оболочек, которые можно использовать, например bash, ksh,
zsh и tcsh. Эти оболочки могут вести себя как оболочки для входа в систему или без
входа в систему. Можно вызвать оболочку входа в систему, открыв собственный
терминал или терминал с графическим интерфейсом.
Чтобы определить, выполняется ли команда в командной оболочке для входа или без
входа, используйте команду echo $0.
Пример. Определение того, работаете ли пользователь в оболочке bash для входа в
систему или без входа в систему
1.
Если на выходе из echo $0 команда возвращает bash, выполните команду в
оболочке без входа в систему.
$ echo $0
bash
umask для оболочки без входа в систему устанавливается в конфигурационный файл
/etc/bashrc
2.
Если на выходе из echo $0 команда возвращает -bash, выполните команду в
оболочке входа в систему.
## echo $0
-bash
umask для оболочки входа в систему устанавливается в конфигурационный файл
etc/profile.
Процедура:
132
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Для отображения значения bash umask по умолчанию для оболочки без входа в
систему используйте:
$ grep umask /etc/bashrc
Результат:
## By default, we want umask to get set. This sets it for non-login shell.
umask 002
umask 022
2.
Чтобы отобразить bash umask по умолчанию для оболочки входа в систему,
используйте:
$ grep umask /etc/profile
Результат:
## By default, we want umask to get set. This sets it for login shell
umask 002
umask 022
Установка umask с использованием символьных значений
Можно использовать umask утилита с символическими значениями (комбинация букв и
знаков) для установки umask для текущего сеанса командной строки
Можно назначить следующее разрешения:
•
•
•
Чтение (r)
Запись (w)
Выполнение (x)
Разрешения могут быть назначены следующим уровням владения:
•
•
•
•
Пользователь - владелец (u)
Владелец группы (g)
Другое (o)
Все (a)
Чтобы добавить или удалить разрешения, используйте следующее знаки:
•
•
+ знак плюс - чтобы добавить разрешения поверх существующих разрешений;
- знак минус - чтобы удалить разрешения из существующего разрешения;
133
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
= знак равенства - чтобы удалить существующие разрешения и явно
определить новые.
Примечание: Любое разрешение, которое не указано после знака равенства (=),
автоматически запрещается.
Процедура:
1.
Чтобы установить umask для текущего сеанса командной строки, используйте:
$ umask -S <level><operation><permission>
2.
Замените level на уровень владения, для которого нужно установить umask.
Замените operation на один из знаков. Замените permission на разрешения,
которые нужно назначить. Например, чтобы установить значение umask u=rwx,
g=rwx, o=rwx, используйте umask -S a=rwx.
Примечание: umask действителен только для текущего сеанса командной строки.
Установка umask с использованием восьмеричных значений
Можно использовать umask утилиту с восьмеричными значениями (числами) для
установки umask для текущего сеанса оболочки.
Процедура:
Чтобы установить umask для текущего сеанса командной строки, используйте:
octal_value
Примечание: umask действителен только для текущего сеанса командной строки.
Изменение umask по умолчанию для оболочки без входа в систему
Можно изменить значение по умолчанию bash umask для обычных пользователей
путем изменения досье /etc/bashrc.
Предварительные условия:
Права root пользователя.
Процедура:
1.
Как пользователь root, откройте файл /etc/bashrc в редакторе.
2.
Измените следующие разделы, чтобы установить новую bash umask по
умолчанию:
134
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
if [ $UID -gt 199 ] && [ "id -gn" = "id -un" ]; then
umask 002
else
umask 022
fi
3.
Замените восьмеричное значение umask ( 002 ) по умолчанию другим
восьмеричным значением.
4.
Сохраните изменения и выйдите из редактора.
Изменение umask по умолчанию для оболочки входа в систему
Можно изменить значение по умолчанию bash umask для пользователя root, изменив
досье /etc/profile.
Предварительные условия:
Права root пользователя.
Процедура:
1.
Как пользователь root, откройте файл /etc/profile в редакторе.
2.
Измените следующие разделы, чтобы установить новую bash umask по
умолчанию:
if [ $UID -gt 199 ] && [ "/usr/bin/id -gn" = "/usr/bin/id -un" ]; then
umask 002
else
umask 022
fi
3.
Замените восьмеричное значение umask ( 022 ) по умолчанию другим
восьмеричным значением.
4.
Сохраните изменения и выйдите из редактора.
Изменение umask по умолчанию для конкретного пользователя
Можно изменить umaskпо умолчанию для конкретного пользователя, изменив .bashrc
для этого пользователя.
Процедура:
135
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Добавьте строку, указывающую восьмеричное значение umask, в файл .bashrc
для конкретного пользователя.
$ echo 'umask octal_value' >> /home/username/.bashrc
2.
Замените octal_value на восьмеричное значение и замените username именем
пользователя.
Установка разрешений по умолчанию для вновь созданных домашних каталогов
Можно изменить режимы разрешений для домашних каталогов вновь созданных
пользователей, изменив файл /etc/login.defs.
Процедура:
1.
Как пользователь root, откройте файл /etc/login.defs в редакторе.
2.
Измените следующий раздел, чтобы установить новый HOME_MODE режим:
## HOME_MODE is used by useradd(8) and newusers(8) to set the mode for new
## home directories.
## If HOME_MODE is not set, the value of UMASK is used to create the mode.
HOME_MODE 0700
3.
Замените восьмеричное значение по умолчанию (0700) другим восьмеричным
значением. Выбранный режим будет использоваться для создания разрешений
для домашнего каталога.
4.
Если установлен параметр HOME_MODE, сохраните изменения и выйдите из
редактора.
5.
Если параметр HOME_MODE не задан, измените UMASK, чтобы установить
режим для вновь созданных домашних каталогов:
## Default initial "umask" value used by login(1) on non-PAM enabled systems.
## Default "umask" value for pam_umask(8) on PAM enabled systems.
## UMASK is also used by useradd(8) and newusers(8) to set the mode for new
## home directories if HOME_MODE is not set.
## 022 is the default value, but 027, or even 077, could be considered
## for increased privacy. There is no One True Answer here: each sysadmin
## must make up their mind.
UMASK 022
136
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
6.
Замените восьмеричное значение по умолчанию (022) другим восьмеричным
значением.
7.
Сохраните изменения и выйдите из редактора.
Использование dnstap в SberLinux
Утилита dnstap предоставляет расширенный способ отслеживания и регистрации
сведений о входящих запросах имен. Он записывает отправленные сообщения из
namedслужбы. В этом разделе объясняется, как записывать DNS-запросы с помощью
dnstap.
Запись DNS-запросов с использованием dnstap в SberLinux
Сетевые администраторы могут записывать DNS-запросы для сбора информации о
веб-сайте или IP-адресе вместе с состоянием домена.
Предварительные условия:
Обновите пакеты BIND.
Примечание: Если уже установлена BIND и запущена его версия, добавление новой
версии BIND приведет к перезаписи существующей версии.
Процедура:
Ниже приведены шаги для записи DNS-запросов:
1.
Отредактируйте файл /etc/named.conf в блоке options, чтобы включить dnstap
и настройте целевой файл:
options
{
## ...
dnstap { all; }; # Configure filter
dnstap-output file "/var/named/data/dnstap.bin";
## ...
};
## end of options
( all | auth | client | forwarder | resolver | update ) [ ( query | response ) ];
Фильтр dnstap содержит несколько определений, разделенных символом в ; в dnstap {
} блоке.
Ниже приведен синтаксис для каждого правила:
137
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
•
•
•
•
•
auth - ответ или ответ авторитетной зоны.
client - внутренний запрос или ответ клиента.
forwarder - переадресованный запрос или ответ от него.
resolver - итеративный запрос разрешения или ответ.
update - динамические запросы на обновление зоны.
all - любой из вышеперечисленных вариантов.
query | response - если ключевое слово запроса или ответа не указано, будут
записаны оба.
В следующем примере запрашиваются только ответы авторизации auth, клиентские
запросы client queries, запросы и ответы динамических обновлений updates:
Example:
dnstap {auth response; client query; update;};
2.
Настройте периодическое развертывание для активных журналов.
В следующем примере содержимое отредактированного пользователем скрипта
запускается один раз в день. Число 3 означает файлы журнала резервного
копирования, ограниченные этим номером. Поскольку файл удаляется, он никогда не
достигает суффикса .2.
Example:
sudoedit /etc/cron.daily/dnstap
#!/bin/sh
rndc dnstap -roll 3
mv /var/named/data/dnstap.bin.1 \ /var/log/named/dnstap/dnstap-$(date -I).bin
## use dnstap-read to analyze saved logs
sudo chmod a+x /etc/cron.daily/dnstap
3.
Используйте утилиту dnstap-read для обработки и анализа журналов в
удобочитаемом формате.
В следующем примере подробный вывод dnstap печатается в формате файла YAML.
Example:
dnstap-read -y [file-name]
138
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Управление списком контроля доступа
У каждого файла и каталога может быть только один пользователь-владелец и один
владелец группы одновременно. Если нужно предоставить пользователю разрешения
на доступ к определенным файлам или каталогам, которые принадлежат другому
пользователю или группе, сохраняя при этом другие файлы и каталоги закрытыми,
можно использовать списки управления доступом Linux (ACL).
Отображение текущего списка контроля доступа
Можно использовать утилиту getfacl для отображения текущего списка управления
доступом.
Процедура:
1.
Чтобы отобразить текущий список управления доступом для определенного
файла или каталога, используйте:
$ getfacl file-name
2.
Замените file-name именем файла или каталога.
Настройка списка контроля доступа
Можно использовать утилиту setfacl для установки ACL для файла или каталога.
Предварительные условия:
Права root пользователя.
Процедура:
1.
Чтобы задать список управления доступом для файла или каталога,
используйте:
## setfacl -m u:username: symbolic_valuefile-name
2.
Замените username с указанием имени пользователя, symbolic_value с
символическим значением, и file-name с именем файла или каталога.
Пример. Изменение разрешений для группового проекта
В следующем примере описывается, как изменить разрешения для файла groupproject, принадлежащего пользователю root, который принадлежит к корневой группе,
чтобы этот файл был:
•
•
Никем не исполняемым.
Пользователь mikhail имел бы разрешения rw-.
139
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
У пользователя maria были бы соответствующие —разрешения.
У других пользователей были бы соответствующие r–разрешения.
Процедура:
## setfacl -m u:mikhail:rw- group-project
## setfacl -m u:maria:--- group-project
Этапы проверки:
Чтобы убедиться, что у пользователя mikhail есть rw-разрешение, у пользователя
maria есть —разрешение и у других пользователей есть r–разрешение, используйте:
$ getfacl group-project
Результат:
## file: group-project
## owner: root
## group: root user:mikhail:rw- user:maria:--- group::r-- mask::rw- other::r-Использование пакета Chrony для настройки NTP
Точное хронометрирование важно в ИТ по ряду причин. Например, в сети требуются
точные временные метки в пакетах и журналах. В системах Linux NTP протокол
реализуется демоном, работающим в пользовательском пространстве.
Демон пользовательского пространства обновляет системные часы, запущенные в
ядре. Системные часы могут отслеживать время с помощью различных источников
синхронизации. Обычно используется счетчик отметок времени (TSC). TSC - это
регистр процессора, который подсчитывает количество циклов с момента
последнего сброса. Он работает очень быстро, имеет высокое разрешение и не
имеет никаких перебоев.
NTP протокол реализуется chronyd демоном, доступным из репозиториев в chrony
пакете.
В следующих разделах описано, как использовать chrony suite для настройки NTP.
140
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Знакомство с chrony
chrony - это реализация Network Time Protocol (NTP). Существует возможность
использовать chrony:
•
•
•
•
для синхронизации системных часов с NTPсерверами;
для синхронизации системных часов с эталонными часами, например, с GPSприемником;
для синхронизации системных часов с ручным вводом времени;
в качестве NTPv4(RFC 5905) сервера или однорангового узла для предоставления
службы времени другим компьютерам в сети.
chrony хорошо работает в широком диапазоне условий, включая прерывистые
сетевые подключения, сильно перегруженные сети, изменение температуры (обычные
компьютерные часы чувствительны к температуре) и системы, которые не
работают непрерывно или выполняются на виртуальной машине.
Типичная точность между двумя машинами, синхронизированными через Интернет,
составляет несколько миллисекунд, а для машин в локальной сети - десятки
микросекунд. Аппаратные временные метки или аппаратные эталонные часы могут
повысить точность между двумя машинами, синхронизированными до уровня
субмикросекунд.
chrony состоит из chronyd демона (который запускается в пространстве
пользователя) и программы командной строки chronyc (которая может
использоваться для мониторинга производительности chronyd и изменения
различных рабочих параметров во время ее запуска).
Демоны chrony, chronyd, могут контролироваться и управляться утилитой
командной строки chronyc. Эта утилита предоставляет командную строку, которая
позволяет вводить ряд команд для запроса текущего состояния chronyd и внесения
изменений в его конфигурацию. По умолчанию chronyd принимает только команды от
локального экземпляра chronyc, но его можно настроить для приема команд
мониторинга также от удаленных хостов. Удаленный доступ должен быть ограничен.
Использование chronyc для управления chronyd
В этом разделе описывается, как управлять chronyd с помощью утилиты командной
строки chronyc.
Процедура
1.
Чтобы внести изменения в локальный экземпляр chronyd использования
утилиты командной строки chronyc в интерактивном режиме, введите
следующую команду как root пользователь:
141
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
chronyc
2.
Утилита chronyc должна выполняться так, как если бы root пользователь
использовал некоторые из ограниченных команд. Командная строка chronyc
будет отображаться следующим образом:
chronyc>
3.
Чтобы перечислить все команды, введите help.
4.
Альтернативно, утилита также может быть вызвана в неинтерактивном
командном режиме, если вызывается вместе с командой следующим образом:
chronyc command
Примечание: Изменения, внесенные с помощью chronyc, не являются постоянными, они
будут потеряны после chronyd перезагрузки. Для постоянных изменений внесите
изменения в /etc/chrony.conf.
Переход на chrony
ntp больше не поддерживается. chrony включен по умолчанию. По этой причине может
потребоваться миграция с ntp на chrony.
Для миграции с ntp на chrony используйте соответствующие имена программ, файлов
конфигурации и служб, представленные в таблице ниже.
Таблица. Соответствующие названия программ, файлов конфигурации и служб при
переходе с ntp на chrony
имя ntp
имя chrony
/etc/ntp.conf
/etc/chrony.conf
/etc/ntp/keys
/etc/chrony.keys
ntpd
chronyd
ntpq
chronyc
ntpd.service
chronyd.service
ntp-wait.service
chrony-wait.service
Утилиты ntpdate и sntp, которые включены в ntp дистрибутив, можно заменить с
chronyd помощью -q опции или -t опции. Конфигурация может быть задана в
142
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
командной строке , чтобы избежать чтения /etc/chrony.conf. Например, вместо
запуска ntpdate ntp.example.ru chronyd можно было бы запустить как:
## chronyd -q 'server ntp.example.ru iburst'
2018-05-18T12:37:43Z chronyd version 3.3 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP
+SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG)
2018-05-18T12:37:43Z Initial frequency -2.630 ppm<
2018-05-18T12:37:48Z System clock wrong by 0.003159 seconds (step)
2018-05-18T12:37:48Z chronyd exiting
Утилита ntpstat, которая ранее была включена в ntp пакет и поддерживалась только
ntpd, поддерживает оба ntpd и chronyd. Она доступна в ntpstat пакете.
Скрипт миграции
Вызываемый скрипт Python ntp2chrony.py включен в документацию chrony пакета
(/usr/share/doc/chrony). Скрипт автоматически преобразует существующую ntp
конфигурацию в chrony. Он поддерживает наиболее распространенные директивы и
параметры в ntp.conf файле. Любые строки, которые игнорируются при
преобразовании, включаются в качестве комментариев в сгенерированный
chrony.conf файл для проверки. Ключи, которые указаны в файле ntp ключей, но не
помечены как доверенные ключи в ntp.conf, включаются в сгенерированный chrony.keys
файл в качестве комментариев.
По умолчанию скрипт не перезаписывает никаких файлов. Если /etc/chrony.conf или
/etc/chrony.keys уже существует, этот -b параметр можно использовать для
переименования файла в качестве резервной копии. Скрипт поддерживает и другие
опции. Опция –help выводит все поддерживаемые параметры.
Примером вызова скрипта со значением по умолчанию ntp.conf, указанным в ntp
пакете, является следующий скрипт:
## python3 /usr/share/doc/chrony/ntp2chrony.py -b -v
Reading /etc/ntp.conf
Reading /etc/ntp/crypto/pw
Reading /etc/ntp/keys
Writing /etc/chrony.conf
Writing /etc/chrony.keys
Единственная директива, игнорируемая в этом случае - это disable monitor, которая
имеет эквивалент chrony в noclientlog директиве, но она была включена по умолчанию
ntp.conf для смягчения атак с усилением (DDoS атак).
143
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Сгенерированный chrony.conf файл обычно включает в себя ряд allow директив,
соответствующих строкам ограничения ntp.conf. Если нет необходимости запускать
chronyd от NTP имени сервера, удалите все allow директивы с chrony.conf.
Использование Chrony
В следующих разделах описано, как установить, запустить и остановить chronyd, а
также проверить, синхронизирован ли он. В разделах также описывается, как
вручную настроить системные часы.
Управление chrony
Следующая процедура описывает, как установить, запустить, остановить и
проверить состояние chronyd.
Процедура
1.
Chrony suite установлен по умолчанию в SberLinux. Чтобы убедиться, что это
так, выполните следующую команду, как root пользователь:
yum install chrony
Расположение по умолчанию для демона chrony является /usr/sbin/chronyd следующим.
Утилита командной строки будет установлена на /usr/bin/chronyc.
2.
Чтобы проверить состояние chronyd, выполните следующую команду:
$ systemctl status chronyd
chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled)<
Active: active (running) since Wed 2013-06-12 22:23:16 CEST; 11h ago
3.
Для запуска chronyd выполните следующую команду, как root пользователь:
systemctl start chronyd
Чтобы обеспечить автоматический запуск chronyd при запуске системы, выполните
следующую команду, как root пользователь:
systemctl enable chronyd
4.
Чтобы остановить chronyd, выполните следующую команду, как root
пользователь:
144
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
systemctl stop chronyd
5.
Чтобы предотвратить автоматический запуск chronyd при запуске системы,
выполните следующую команду, как root пользователь:
systemctl disable chronyd
Проверка синхронизации chrony
Следующая процедура описывает, как проверить, синхронизируется ли chrony при
использовании tracking, sources и sourcestats команд.
Процедура:
1.
Чтобы проверить chrony отслеживая, выполните следующую команду:
$ chronyc tracking
Reference ID : CB00710F (foo.example.net)
Stratum : 3
Ref time (UTC) : Fri Jan 27 09:49:17 2017
System time : 0.000006523 seconds slow of NTP time
Last offset : -0.000006747 seconds
RMS offset : 0.000035822 seconds
Frequency : 3.225 ppm slow
Residual freq : 0.000 ppm
Skew : 0.129 ppm
Root delay : 0.013639022 seconds
Root dispersion : 0.001100737 seconds
Update interval : 64.2 seconds
Leap status : Normal
Команда источников отображает информацию о текущих источниках времени,
которые является доступом chronyd.
1.
Чтобы проверить источники chrony, выполните следующую команду:
$ chronyc sources
210 Number of sources = 3
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
#* GPS0
0 4 377 11 -479ns[ -621ns] /- 134ns
^? a.b.c
2 6 377 23 -923us[ -924us] +/- 43ms
^ d.e.f
1 6 377 21 -2629us[-2619us] +/- 86ms
145
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Дополнительно, можно задать параметр -v, который означает большую
детализацию отчета (verbose). В этом случае дополнительные строки заголовка
отображаются как напоминание о значениях столбцов.
2.
В sourcestats команда отображает информацию о процессе оценки скорости
дрейфа и смещения для каждого из источников, которые в данный момент
исследуются chronyd. Чтобы проверить исходную статистику, выполните
следующую команду:
$ chronyc sourcestats
210 Number of sources = 1
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev
===============================================================================
abc.def.ghi 11 5 46m -0.001 0.045 1us 25us
Дополнительно, можно задать параметр -v, который означает большую
детализацию отчета (verbose). В этом случае дополнительные строки заголовка
отображаются как напоминание о значениях столбцов.
Ручная настройка системных часов
Следующая процедура описывает, как вручную настроить системные часы.
Процедура:
Чтобы немедленно перевести системные часы в иное значение, минуя любые текущие
настройки, выполните следующую команду, как root пользователь:
chronyc makestep
Если используется директива rtcfile, то часы реального времени не следует
настраивать вручную. Случайные корректировки помешали бы chrony измерить
скорость, с которой смещаются часы реального времени.
Настройка chrony для системы в изолированной сети
Для сети, которая никогда не подключена к Интернету, один компьютер выбирается
в качестве главного сервера времени. Остальные компьютеры являются либо
прямыми клиентами ведущего, либо клиентами клиентов. На главном сервере файл
дрейфа должен быть установлен вручную со средней скоростью дрейфа системных
часов. Если мастер будет перезагружен, он получит время от окружающих систем и
вычислит среднее значение для установки своих системных часов. После этого он
возобновляет применение корректировок на основе файла дрейфа. Файл дрейфа
будет обновляться автоматически, когда settime используется команда.
146
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Следующая процедура описывает, как настроить chrony для asystem в изолированной
сети.
Процедура:
1.
В системе, выбранной в качестве основной, используя текстовый редактор,
запущенный с правами root, отредактируйте /etc/chrony.conf следующим
образом:
driftfile /var/lib/chrony/drift
commandkey 1
keyfile /etc/chrony.keys
initstepslew 10 client1 client3 client6
local stratum 8
manual
allow 192.0.2.0
Где находится адрес сети или подсети 192.0.2.0, с которого клиентам разрешено
подключаться.
2.
В системах, выбранных в качестве прямых клиентов ведущего, используя
текстовый редактор, работающий как root, отредактируйте /etc/chrony.conf
следующим образом:
server master
driftfile /var/lib/chrony/drift
logdir /var/log/chrony
log measurements statistics tracking
keyfile /etc/chrony.keys
commandkey 24
local stratum 10
initstepslew 20 master
allow 192.0.2.123
Где 192.0.2.123 - это адрес ведущего устройства, а master - имя хоста ведущего
устройства. Клиенты с такой конфигурацией будут повторно синхронизировать
мастер, если он перезапустится.
В клиентских системах, которые не должны быть прямыми клиентами ведущего, файл
/etc/chrony.conf должен быть таким же, за исключением того, что директивы localand
allow должны быть опущены.
В изолированной сети можно использовать директиву local, которая включает
локальный ссылочный режим и позволяет chronyd работать в качестве NTP сервера,
147
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
синхронизированного с реальным временем, даже если он никогда не был
синхронизирован или последнее обновление часов произошло давно.
Чтобы разрешить нескольким серверам в сети использовать одну и ту же локальную
конфигурацию и синхронизироваться друг с другом, не вводя в заблуждение клиентов
(которые опрашивают более одного сервера), используйте опцию orphan директивы
local, которая включает режим orphan mode. Каждый сервер должен быть настроен
для опроса всех других серверов local. Это гарантирует, что локальная ссылка
активна только на сервере с наименьшим идентификатором ссылки, а другие
серверы синхронизированы с ним. Когда сервер выйдет из строя, его заменит другой.
Настройка удаленного доступа к мониторингу
chronyc может получить доступ chronyd двумя способами:
•
•
Интернет-протокол, IPv4 или IPv6.
Доменный сокет Unix, который доступен локально с помощью прав root или
chrony.
По умолчанию, chronyc подключается к доменному сокету Unix. Путь по умолчанию
таков /var/run/chrony/chronyd.sock. Если соединение не удается установить, такое
может произойти, когда chronyc работает под управлением пользователя без root
прав, то chronyc попытается подключиться к адресу локального хоста 127.0.0.1, а
затем к петлевому адресу ::1.
Из сети разрешены только следующие команды мониторинга, которые не влияют на
поведение chronyd:
•
•
•
•
•
•
•
•
activity
manual list
rtcdata
smoothing
sources
sourcestats
tracking
waitsync
Набор хостов, с которых chronyd принимаются эти команды, может быть настроен
со cmdallow помощью директивы в файле конфигурации chronyd или cmdallow команды
в chronyc. По умолчанию команды принимаются только с локального хоста (127.0.0.1
или ::1).
Все остальные команды разрешены только через доменный сокет Unix. При отправке
по сети chronyd выдает сообщение об ошибке Not authorised, даже если оно
отправлено с локального хоста.
148
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Следующая процедура описывает, как получить удаленный доступ к chronyd с
помощью chronyc.
Процедура:
1.
Разрешите доступ как с IPv4, так и с IPv6-адресов, добавив в файл
/etc/chrony.conf следующее:
bindcmdaddress 0.0.0.0
или
bindcmdaddress ::
2.
Разрешите команды с удаленного IP-адреса, сети или подсети с помощью
cmdallow директивы.
3.
Добавьте в файл /etc/chrony.conf следующее содержимое:
cmdallow 192.168.1.0/24
4.
Откройте порт 323 в межсетевом экране для подключения из удаленной
системы:
firewall-cmd --zone=public --add-port=323/udp
При необходимости откройте порт 323 для постоянного подключения, используя –
permanent опцию:
firewall-cmd --permanent --zone=public --add-port=323/udp
5.
Если постоянно открыли порт 323, перезагрузите конфигурацию межсетевого
экрана:
firewall-cmd --reload
Управление синхронизацией времени с помощью системных ролей SberLinux
Можно управлять синхронизацией времени на нескольких целевых машинах, используя
роль timesync. Роль timesync устанавливает и настраивает реализацию NTP или PTP
для работы в качестве клиента NTP или подчиненного устройства PTP, чтобы
149
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
синхронизировать системные часы с серверами NTP или ведущими устройствами PTP
(grandmaster PTP) в доменах PTP.
Обратите внимание, что использование роли timesync также облегчает переход на
chrony, поскольку можно использовать один и тот же playbook во всех версиях
SberLinux, независимо от того, использует ли система ntp или chrony для реализации
протокола NTP.
Предупреждение: Роль timesync заменяет конфигурацию заданной или обнаруженной
службы поставщика на управляемом узле. Предыдущие настройки будут потеряны,
даже если они не указаны в переменных роли. Единственная сохраненная настройка это выбор поставщика, если переменная timesync_ntp_provider не определена.
В следующем примере показано, как применить роль timesync в ситуации только с
одним пулом серверов.
Пример. Примерный сборник задач, применяющий роль синхронизации времени для
одного пула серверов
--- hosts: timesync-test
vars:
timesync_ntp_servers:
- hostname: 2.sberlinux.pool.ntp.ru
pool: yes
iburst: yes
roles:
- sberlinux-system-roles.timesync
Chrony с отметкой времени HW
Аппаратная временная метка - это функция, поддерживаемая некоторыми
контроллерами сетевых интерфейсов (NIC), которая обеспечивает точную
временную метку входящих и исходящих пакетов. NTP временные метки обычно
создаются ядром и chronyd с использованием системных часов. Однако, когда
включена временная метка HW, сетевой адаптер использует свои собственные часы
для генерации временных меток, когда пакеты входят или выходят из канального
уровня или физического уровня. При использовании с NTP аппаратными временными
метками можно значительно повысить точность синхронизации. Для достижения
наилучшей точности, как NTP серверы, так и NTP клиенты должны использовать
аппаратные временные метки. В идеальных условиях может быть возможна точность
в несколько микросекунд.
Другим протоколом для синхронизации времени, использующим аппаратную
временную метку, является PTP.
150
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
В отличие от NTP, PTP полагается на помощь в сетевых коммутаторах и
маршрутизаторах. Если необходимо достичь наилучшей точности синхронизации,
используйте PTP в сетях, где есть коммутаторы и маршрутизаторы с PTP
поддержкой, и отдавайте предпочтение NTP сетям, в которых таких коммутаторов
и маршрутизаторов нет.
В следующих разделах описано, как:
•
•
•
•
•
•
•
Проверить поддержку аппаратных временных меток.
Включить аппаратную временную метку.
Настроить интервал опроса клиента.
Включить режим чередования.
Настроить сервер для большого количества клиентов.
Проверить временные метки оборудования.
Настроить мост PTP-NTP.
Проверка поддержки аппаратной временной метки
Чтобы проверить, что аппаратная временная метка с NTP поддерживается
интерфейсом, используйте ethtool -T команду. Интерфейс может быть использован
для аппаратных временных меток с NTP ethtool если перечисляет
SOF_TIMESTAMPING_TX_HARDWARESOF_TIMESTAMPING_TX_SOFTWARE и возможности, а
также режим фильтрации HWTSTAMP_FILTER_ALL.
Включение аппаратной отметки времени
Чтобы включить аппаратную временную метку, используйте директиву hwtimestamp
в файле /etc/chrony.conf. Директива может либо указывать один интерфейс, либо
использовать подстановочный знак для включения аппаратных временных меток на
всех интерфейсах, которые его поддерживают. Используйте спецификацию
подстановочных знаков в случае, если никакое другое приложение, например ptp4l из
linuxptp пакета, не использует аппаратную временную метку в интерфейсе. В файле
hwtimestamp конфигурации chrony допускается наличие нескольких директив.
Пример. Включение аппаратной временной метки с помощью директивы hwtimestamp
hwtimestamp eth0
hwtimestamp eth1
hwtimestamp *
Настройка интервала опроса клиентов
Диапазон интервала опроса по умолчанию (64-1024 секунды) рекомендуется для
серверов в Интернете. Для локальных серверов и аппаратных временных меток
151
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
необходимо настроить более короткий интервал опроса, чтобы минимизировать
смещение системных часов.
Следующая директива в /etc/chrony.conf указывает локальный NTP сервер,
использующий интервал опроса в одну секунду:
server ntp.local minpoll 0 maxpoll 0 xleave
Включение режима чередования
NTP серверы, которые не являются аппаратными NTP устройствами, а скорее компьютерами общего назначения, где выполняется программная NTP реализация,
например chrony, получат метку времени аппаратной передачи только после
отправки пакета. Такое поведение не позволяет серверу сохранять временную метку
в пакете, которому она соответствует. Чтобы разрешить NTP клиентам получать
временные метки передачи, которые были сгенерированы после передачи, настройте
клиентов на использование режима NTP чередования, добавив опцию xleave в
/etc/chrony.conf директиву сервера:
server ntp.local minpoll 0 maxpoll 0 xleave
Настройка сервера для большого количества клиентов
Конфигурация сервера по умолчанию позволяет использовать режим чередования
одновременно не более чем нескольким тысячам клиентов. Чтобы настроить сервер
для большего числа клиентов, увеличьте clientloglimit директиву в /etc/chrony.conf.
Эта директива определяет максимальный размер памяти, выделяемой для ведения
журнала доступа клиентов на сервере:
clientloglimit 100000000
Проверка временных меток оборудования
Чтобы убедиться, что интерфейс успешно включил аппаратную временную метку,
проверьте системный журнал. Журнал должен содержать сообщение от для каждого
интерфейса с успешно включенной аппаратной временной меткой.
Пример. Регистрируйте сообщения для интерфейсов с включенной аппаратной
временной меткой
152
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
chronyd[4081]: Enabled HW timestamping on eth0
chronyd[4081]: Enabled HW timestamping on eth1
Если chronyd настроен как NTP клиент или одноранговый узел, можно указать режимы
передачи и приема временных меток, а также режим чередования, сообщаемый для
каждого NTP источника chronycкомандой ntpdata.
Пример. Отчетность о стабильности измерений NTP
chronyc sourcestats
При включенной аппаратной временной метке стабильность NTP измерений должна
составлять десятки или сотни наносекунд при нормальной нагрузке. Об этой
стабильности сообщается в столбце Std Dev выходных данных команды chronyc
sourcestats:
Выходные данные:
210 Number of sources = 1
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev
ntp.local 12 7 11 +0.000 0.019 +0ns 49ns
Настройка моста PTP-NTP
Если высокоточный протокол точного времени (PTP) grandmaster доступен в сети, в
которой нет коммутаторов или маршрутизаторов с PTP поддержки, компьютер
может быть выделен для работы в качестве PTP slave и stratum-1 NTP. Такой
компьютер должен иметь два или более сетевых интерфейса и находиться рядом с
ведущим устройством PTP (grandmaster PTP) или иметь прямое подключение к нему.
Это обеспечит высокоточную синхронизацию в сети.
1.
Настройте ptp4l и программы phc2sys из linuxptp пакеты для использования
одного интерфейса для синхронизации системных часов с помощью PTP.
2.
Настройте chronyd, чтобы указать системное время, используя другой
интерфейс:
Пример. Настройка chronyd для предоставления системного времени с
использованием другого интерфейса
bindaddress 203.0.113.74
153
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
hwtimestamp eth1
local stratum 1
Использование защищенной связи между двумя системами с помощью OpenSSH
SSH (Secure Shell) - это протокол, который обеспечивает безопасную связь между
двумя системами с использованием архитектуры клиент-сервер и позволяет
пользователям удаленно входить в системы хост-сервера. В отличие от других
протоколов удаленной связи, таких как FTP или Telnet, SSH шифрует сеанс входа в
систему, что не позволяет злоумышленникам собирать незашифрованные пароли от
соединения.
SberLinux включает в себя базовые OpenSSH пакеты: общий openssh пакет, opensshserver пакет и openssh-clients пакет. Обратите внимание, что для OpenSSH пакетов
требуется OpenSSL пакет openssl-libs, который устанавливает несколько важных
криптографических библиотек, позволяющих OpenSSH обеспечивать зашифрованную
связь.
SSH и OpenSSH
SSH (Secure Shell) - это программа для входа в удаленную машину и выполнения команд
на этой машине. Протокол SSH обеспечивает безопасную зашифрованную связь между
двумя ненадежными хостами по небезопасной сети. Можно пересылать соединения
X11 и произвольные порты TCP/IP по защищенному каналу.
Протокол SSH устраняет угрозы безопасности, такие как перехват связи между
двумя системами и олицетворение конкретного хоста, когда используете его для
удаленного входа в оболочку или копирования файлов. Это связано с тем, что SSHклиент и сервер используют цифровые подписи для проверки своих удостоверений
личности. Кроме того, все коммуникации между клиентской и серверной системами
зашифрованы.
Ключ хоста аутентифицирует хосты по протоколу SSH. Ключи хоста - это
криптографические ключи, которые генерируются автоматически при первой
установке OpenSSH или при первой загрузке хоста.
OpenSSH - это реализация протокола SSH, поддерживаемого Linux, UNIX и
аналогичными операционными системами. Он включает в себя основные файлы,
необходимые как для клиента OpenSSH, так и для сервера. Пакет OpenSSH состоит
из следующих инструментов пользовательского пространства:
•
•
•
•
ssh - это программа удаленного входа в систему (SSH-клиент).
sshd - это SSH-демон OpenSSH.
scp - это безопасная программа удаленного копирования файлов.
sftp - это безопасная программа передачи файлов.
154
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
•
•
•
ssh-agent - является агентом аутентификации для кеширования закрытых
ключей.
ssh-add - добавляет идентификаторы закрытых ключей к ssh-agent.
ssh-keygen - генерирует, управляет и преобразует ключи аутентификации для
ssh.
ssh-copy-id - это скрипт, который добавляет локальные открытые ключи к
authorized_keys файлу на удаленном SSH-сервере.
ssh-keyscan - собирает открытые ключи хоста SSH.
В настоящее время существуют две версии SSH: версия 1 и более новая версия 2. Он
имеет усовершенствованный алгоритм обмена ключами, который не уязвим для
эксплойтов, известных в версии 1.
OpenSSH, как одна из основных криптографических подсистем SberLinux, использует
общесистемные криптополитики. Это гарантирует, что слабые наборы шифров и
криптографические алгоритмы будут отключены в конфигурации по умолчанию.
Чтобы изменить политику, администратор должен либо использовать update-cryptopolicies команду для настройки параметров, либо вручную отказаться от
общесистемных политик шифрования.
Пакет OpenSSH использует два набора файлов конфигурации: один для клиентских
программ (то есть, ssh, scp, и sftp), а другой для сервера (sshd демона).
Общесистемная информация о конфигурации SSH хранится в каталоге /etc/ssh/.
Специфичная для пользователя информация о конфигурации SSH хранится в домашнем
каталоге пользователя ~/.ssh/.
Oсновные криптокомпоненты SberLinux
Криптоядро SberLinux состоит из следующих компонентов, которые обеспечивают
низкоуровневые криптографические алгоритмы (шифры, хэши, коды аутентификации
сообщений и т.д.), криптографически безопасные генераторы случайных чисел и
реализации безопасных протоколов связи, такие как TLS и SSH.
Компонен
т
Криптографический модуль
Описание
OpenSSL
ДА
Библиотека криптографического
инструментария общего назначения,
включающая реализации TLS и DTLS
GnuTLS
ДА
Криптографический инструментарий,
ориентированный на простую в
использовании реализацию TLS и DTLS
155
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Компонен
т
Криптографический модуль
Описание
NSS
ДА
Библиотека криптографического
инструментария браузера Firefox; следует
жизненному циклу Firefox ESR с
асинхронными обновлениями и включением
или удалением функций
libgcrypt
ДА
Криптографическая библиотека GnuPG
kernel
ДА
Внутренняя криптографическая библиотека
ядра Linux
OpenSSH
Нет. Не реализует никаких FIPS-140-2соответствующая криптография, он
использует модуль OpenSSL
Клиентские и серверные приложения SSH
операционной системы
libssh
Нет. Не реализует никаких FIPS-140-2соответствующая криптография, он
использует модуль OpenSSL
Защищенная библиотека связи,
реализующая протокол SSH
Libreswan
Нет. Не реализует никаких FIPS-140-2соответствующая криптография, он
использует модуль NSS
Клиентские и серверные приложения IPSec
операционной системы
В SberLinux введена общесистемная регистрация модулей PKCS #11 используя p11-kit и
pkcs11.conf(5). Таким образом, приложения, использующие основные криптомодули,
такие как OpenSSH, wget, curl и другие, не требуют дополнительной настройки для
использования смарт-карт. Кроме того, ссылки на объекты указаны
последовательно во всех файлах конфигурации приложения SberLinux.
Создание пользовательской общесистемной криптографической политики
Можно создать полностью индивидуальную общесистемную криптографическую
политику для своей системы.
1.
Создайте файл политики:
cd /etc/crypto-policies/policies/
sudo touch MYPOLICY.pol
Этот файл также может быть создан путем копирования предопределенной
политики из 4 доступных уровней политики.
Например;
sudo cp /usr/share/crypto-policies/policies/DE
156
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
2.
Отредактируйте файл в соответствии с требованиями:
sudo vi /etc/crypto-policies/policies/MYPOLICY.pol
3.
После редактирования примените политику с помощью команды:
sudo update-crypto-policies --set MYPOLICY
4.
Перезагрузите систему, чтобы изменения вступили в силу.
sudo reboot
Проверка общесистемных криптографических политик
Команда update-crypto-policies используется для управления общесистемной
криптографической политикой.
Этот пакет обычно предустановлен.
Если он недоступен, установите его с помощью команды:
sudo yum -y install crypto-policies-scripts
Дерево зависимостей:
Dependencies resolved.
=======================================
Package
Arch Version
Repo Size
=======================================
Upgrading:
crypto-policies noarch 20211116-1.gitae470d6.el8
baseos 63 k
crypto-policies-scripts
noarch 20211116-1.gitae470d6.el8
baseos 82 k
Transaction Summary
=======================================
Upgrade 2 Packages
Total download size: 145 k
Downloading Packages:
157
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
После установки проверьте текущую общесистемную криптографическую политику с
помощью команды:
sudo update-crypto-policies --show DEFAULT
Установка/изменение общесистемных криптографических политик
Общесистемная криптографическая политика может быть переключена на
предпочтительную с помощью команды update-crypto-policies.
Синтаксис используемой команды следующий:
sudo update-crypto-policies --set <POLICY>
Например, при переходе к политике FUTURE команда будет следующей:
sudo update-crypto-policies --set FUTURE
После установки политики перезагрузите систему:
sudo reboot
Тестирование общесистемной криптографической политики
Каждая политика имеет свой собственный набор правил.
Проверьте политику:
sudo update-crypto-policies --show
FUTURE
Проверьте политику с помощью команды cURL, приведенной ниже:
curl https://sha1-intermediate.badssl.com
Вывод покажет, что сертификат SHA-1 был запрещен.
Это доказывает, что политика FUTURE работает так, как необходимо.
Исключение приложения из общесистемных криптополитик
158
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Общесистемные криптополитики заставляют службу или приложение следовать
установленным политикам.
Однако можно исключить приложение из общесистемных криптографических
политик.
Это можно сделать, настроив наборы шифров и протоколы непосредственно в
приложении.
Также можно удалить системную ссылку из /etc/crypto-policies/back-ends на
приложение и заменить ее настроенными политиками.
Например:
curl https://example.ru --ciphers ‘@SECLEVEL=0:DES-CBC3-SHA:RSA-DES-CBC3-SHA’
Также можете использовать wget и указать оба параметра –secure-protocol и –
ciphers.
Например:
wget --secure-protocol=TLSv1_1 --ciphers=”SECURE128″ https://example.ru
Настройка общесистемных криптографических политик с помощью подполитик
Настройку набора включенных криптографических алгоритмов или протоколов
можно сделать двумя способами: применить пользовательские подполитики поверх
существующей общесистемной криптографической политики или определить
политику с нуля.
1.
Перейдите в каталог ниже:
cd /etc/crypto-policies/policies/modules/
Создайте нужные подполитики.
sudo touch MYCRYPTO-1.pmod SCOPES-AN
Откройте созданную подполитику для редактирования:
sudo vi SCOPES-AND-WILDCARDS.pmod
159
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Добавьте параметры для изменения существующей общесистемной
криптографической политики.
Например:
## Отключить шифр AES-128, все режимы
cipher = -AES-128-*
## Отключить CHACHA20-POLY1305 для протокола TLS (OpenSSL, GnuTLS, NSS и OpenJDK)
cipher@TLS = -CHACHA20-POLY1305
## Разрешить использование группы FFDHE-1024 для протокола SSH (libssh и OpenSSH)
group@SSH = FFDHE-1024+
## Отключить все шифры режима CBC для протокола SSH (libssh и OpenSSH)
cipher@SSH = -*-CBC
## Разрешить шифр AES-256-CBC в приложениях, использующих libssh
cipher@libssh = AES-256-CBC+
Также можно редактировать другой файл:
sudo vi MYCRYPTO-1.pmod
min_rsa_size = 3072
hash = SHA2-384 SHA2-512 SHA3-384 SHA3-512
2.
После сохранения изменений примените модули:
sudo update-crypto-policies --set DEFAULT:MYCRYPTO-1:SCOPES-AND-WILDCARDS
Setting system policy to DEFAULT:MYCRYPTO-1:SCOPES-AND-WILDCARDS
Note: System-wide crypto policies are applied on application start-up.
It is recommended to restart the system for the change of policies
to fully take place.
3.
Чтобы изменения были применены, перезагрузите систему.
sudo reboot
4.
После загрузки системы проверьте новую политику и подполитику:
160
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
update-crypto-policies --show
DEFAULT:MYCRYPTO-1:SCOPES-AND-WILDCARDS
Настройка и запуск сервера OpenSSH
Используйте следующую процедуру для базовой конфигурации, которая может
потребоваться для среды и для запуска сервера OpenSSH. Обратите внимание, что
после установки SberLinux по умолчанию sshd демон уже запущен, и ключи хоста
сервера создаются автоматически.
Предварительные условия:
Пакет openssh-server установлен.
Процедура:
1.
Запустите sshd демон в текущем сеансе и настройте его на автоматический
запуск во время загрузки:
systemctl start sshd
systemctl enable sshd
2.
Чтобы указать адреса, отличные от адресов по умолчанию 0.0.0.0 (IPv4) или
::(IPv6) для директивы ListenAddress в файле конфигурации /etc/ssh/sshd_config, и
использовать более медленную динамическую конфигурацию сети, добавьте
зависимость от network-online.target целевого устройства в файл sshd.service.
Для достижения этой цели создайте файл
/etc/systemd/system/sshd.service.d/local.conf со следующим содержимым:
[Unit]
Wants=network-online.target
After=network-online.target
3.
Проверьте, соответствуют ли параметры сервера OpenSSH в файле
конфигурации /etc/ssh/sshd_config требованиям сценария.
4.
При необходимости измените приветственное сообщение, отображаемое
сервером OpenSSH перед аутентификацией клиента, отредактировав файл
/etc/issue, например:
Welcome to ssh-server.example.ru
Warning: By accessing this server, you agree to the referenced terms and conditions.
161
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
5.
Убедитесь, что параметр Banner не закомментирован в /etc/ssh/sshd_config и
его значение содержит /etc/issue:
## less /etc/ssh/sshd_config | grep Banner
Banner /etc/issue
6.
Обратите внимание, что для изменения сообщения, отображаемого после
успешного входа в систему, необходимо отредактировать файл /etc/motd на
сервере.
7.
Перезагрузите systemd конфигурацию и перезапустите sshd, чтобы применить
изменения:
## systemctl daemon-reload**
## systemctl restart sshd
Проверка:
1.
Убедитесь, что демон sshd запущен:
## systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2019-11-18 14:59:58 CET; 6min ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1149 (sshd)
Tasks: 1 (limit: 11491)
Memory: 1.9M
CGroup: /system.slice/sshd.service
└─1149 /usr/sbin/sshd -D -oCiphers=aes128-ctr,aes256-ctr,aes128-cbc,aes256-cbc -oMACs=hmacsha2-256,
Nov 18 14:59:58 ssh-server-example.ru systemd[1]: Starting OpenSSH server daemon...
Nov 18 14:59:58 ssh-server-example.ru sshd[1149]: Server listening on 0.0.0.0 port 22.
Nov 18 14:59:58 ssh-server-example.ru sshd[1149]: Server listening on :: port 22.
Nov 18 14:59:58 ssh-server-example.ru systemd[1]: Started OpenSSH server daemon.
2.
Подключитесь к SSH-серверу с помощью SSH-клиента.
## ssh [email protected]
ECDSA key fingerprint is SHA256:dXbaS0RG/UzlTTku8GtXSz0S1++lPegSy31v3L/FAEc.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
162
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Warning: Permanently added 'ssh-server-example.ru' (ECDSA) to the list of known hosts.
[email protected]'s password:
Настройка сервера OpenSSH для аутентификации на основе ключей
Чтобы повысить безопасность системы, примените проверку подлинности на основе
ключей, отключив проверку подлинности по паролю на сервере OpenSSH.
Предварительные условия:
•
•
Пакет openssh-server установлен.
Демон sshd запущен на сервере.
Процедура:
1.
Откройте конфигурацию /etc/ssh/sshd_config в текстовом редакторе, например:
## vi /etc/ssh/sshd_config
2.
Измените параметр PasswordAuthentication на no:
PasswordAuthentication no
В системе, отличной от новой установки по умолчанию, проверьте, что
PubkeyAuthentication no не была установлена и ChallengeResponseAuthentication
директива установлена на no. Если подключение осуществляется удаленно, не
используя консоль или внеполосный доступ, протестируйте процесс входа на основе
ключа, прежде чем отключать проверку подлинности по паролю.
3.
Чтобы использовать аутентификацию на основе ключа в домашних каталогах,
подключенных к NFSuse_nfs_home_dirs, включите логическое значение SELinux:
## setsebool -P use_nfs_home_dirs 1
4.
Перезагрузите демон sshd, чтобы применить изменения:
## systemctl reload sshd
Создание пары ключей SSH
Способ определить, использует ли система криптографические хеши для хранения
паролей - это посмотреть файл /etc/shadow (с root доступом). Каждая строка
отформатирована следующим образом: user:password:last-changed:minimumage:maximum-age:warning-period:inactivity-period:expiration-date:reserved. Поле пароля
163
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
может начинаться с $num$ (т.е. хеш md5 в поле пароля выглядит как
$1$01234567$b5lh2mHyD2PdJjFfALlEz1, где он начинается с $1$). Это означает, что
система использует криптографический хеш. Формат поля пароля во всех
современных системах - $id$salt$hash. Идентификатор указывает, какой тип
криптографического хеша используется. salt - это случайно сгенерированная строка,
которая объединяется с ключом (простым текстовым паролем) для защиты от
предварительно вычисленных таблиц известных хэшей. Хеш - это криптографический
хеш, созданный из salt и ключа/ пароля. Если поле пароля начинается с $num$, значит,
используются криптографические хеши.
Обозначения:
•
•
•
•
$1$ означает, что используется MD5;
$2 $ или $2a$ означает, что используется blowfish;
$5$ означает, что используется SHA-256;
$6$ означает, что используется SHA-512.
Используйте эту процедуру для создания пары ключей SSH в локальной системе и
копирования сгенерированного открытого ключа на сервер OpenSSH. Если сервер
настроен соответствующим образом, можно войти на сервер OpenSSH без указания
какого-либо пароля.
Примечание: Выполните следующие действия от имени root, так как только root
пользователь сможет использовать ключи.
Процедура:
Чтобы сгенерировать пару ключей ECDSA для версии 2 протокола SSH, введите:
$ ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/joesec/.ssh/id_ecdsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/joesec/.ssh/id_ecdsa.
Your public key has been saved in /home/joesec/.ssh/id_ecdsa.pub.
The key fingerprint is:
SHA256:Q/x+qms4j7PCQ0qFd09iZEFHA+SqwBKRNaU72oZfaCI [email protected]
The key's randomart image is:
+---[ECDSA 256]---+
|.oo..o=++ |
|.. o .oo . |
|. .. o. o |
|....o.+... |
|o.oo.o +S . |
164
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
|.=.+. .o |
|E.*+. . . . |
|.=..+ +.. o |
| . oo*+o. |
+----[SHA256]-----+
Также можно сгенерировать пару ключей RSA, используя опцию -t rsa с командой sshkeygen, или пару ключей Ed25519, введя команду ssh-keygen -t ed25519.
2.
Скопируйте открытый ключ на удаленную машину:
$ ssh-copy-id [email protected]
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already
installed
[email protected]'s password:
...
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'" and check to make sure
that only the key(s) you wanted were added.
Теперь попробуйте войти в систему с помощью: ssh [email protected] и
проверьте, что были добавлены только те ключи, которые необходимы. Если не
используете программу ssh-agent в своем сеансе, предыдущая команда копирует
самый последний измененный открытый ключ **~/.ssh/id*.pub, если он еще не
установлен. Чтобы указать другой файл с открытым ключом или установить
приоритет ключей в файлах над ключами, кешированными в памяти ssh-агентом,
используйте команду ssh-copy-id с опцией -i**.
Примечание: Если переустановите систему и появится необходимость сохранения
пары ключей, создайте резервную копию каталога ~/.ssh/. После переустановки
скопируйте его обратно в свой домашний каталог. Можно сделать это для всех
пользователей системы, включая root пользователя.
Проверка:
Войдите на сервер OpenSSH без указания какого-либо пароля:
$ ssh [email protected]
Welcome message.
...
165
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Last login: Mon Nov 18 18:28:42 2019 from ::1
Использование ключей SSH, хранящихся на смарт-карте
SberLinux позволяет использовать ключи RSA и ECDSA, хранящиеся на смарт-карте, в
клиентах OpenSSH. Используйте эту процедуру, чтобы включить аутентификацию с
использованием смарт-карты вместо использования пароля.
Предварительные условия:
На стороне клиента установлен пакет opensc и запущена служба pcscd.
Процедура:
1.
Перечислите все ключи, предоставляемые модулем OpenSC PKCS #11, включая их
URI PKCS #11, и сохраните выходные данные в файле keys.pub:
$ ssh-keygen -D pkcs11: > keys.pub
$ ssh-keygen -D pkcs11:
ssh-rsa AAAAB3NzaC1yc2E...KKZMzcQZzx
pkcs11:id=%02;object=SIGN%20pubkey;token=SSH%20key;manufacturer=piv_II?modulepath=/usr/lib64/pkcs11/opensc-pkcs11.so
ecdsa-sha2-nistp256 AAA...J0hkYnnsM=
pkcs11:id=%01;object=PIV%20AUTH%20pubkey;token=SSH%20key;manufacturer=piv_II?modulepath=/usr/lib64/pkcs11/opensc-pkcs11.so
2.
Чтобы включить аутентификацию с помощью смарт-карты на удаленном
сервере (example.ru), передайте открытый ключ на удаленный сервер.
Используйте команду ssh-copy-id с keys.pub, созданную на предыдущем шаге:
$ ssh-copy-id -f -i keys.pub [email protected]
3.
Для подключения к example.ru используя ключ ECDSA из выходных данных
команды ssh-keygen -D на шаге 1, можно использовать только подмножество
URI, которое однозначно ссылается на ключ, например:
$ ssh -i "pkcs11:id=%01?module-path=/usr/lib64/pkcs11/opensc-pkcs11.so" example.ru
Enter PIN for 'SSH key':
[example.ru] $
4.
При необходимости используйте ту же строку URI в файле ~/.ssh/config, чтобы
сделать конфигурацию постоянной:
166
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
$ cat ~/.ssh/config
IdentityFile "pkcs11:id=%01?module-path=/usr/lib64/pkcs11/opensc-pkcs11.so"
$ ssh example.ru
Enter PIN for 'SSH key':
[example.ru] $
Поскольку OpenSSH использует оболочку p11-kit-proxy, а модуль OpenSC PKCS #11
зарегистрирован в PKCS#11 Kit, можно упростить предыдущие команды:
$ ssh -i "pkcs11:id=%01" example.ru
Enter PIN for 'SSH key':
[example.ru] $
Если пропустите id= часть URI PKCS #11, OpenSSH загрузит все ключи, доступные в
прокси-модуле. Это может уменьшить объем требуемого набора текста:
$ ssh -i pkcs11: example.ru
Enter PIN for 'SSH key':
[example.ru] $
Безопасность OpenSSH
Следующие советы помогут повысить безопасность при использовании OpenSSH.
Обратите внимание, что изменения в файле конфигурации /etc/ssh/sshd_config
OpenSSH требуют перезагрузки демона sshd для вступления в силу:
## systemctl reload sshd
Примечание: Большинство изменений конфигурации усиления безопасности снижают
совместимость с клиентами, которые не поддерживают современные алгоритмы или
наборы шифров.
Отключение небезопасных протоколов подключения
Чтобы сделать SSH действительно эффективным, предотвратите использование
небезопасных протоколов подключения, которые заменяются пакетом OpenSSH. В
противном случае пароль пользователя может быть защищен с помощью SSH только
на один сеанс, чтобы быть захваченным позже при входе в систему с помощью Telnet.
По этой причине рассмотрите возможность отключения небезопасных протоколов,
таких как telnet, rsh, rlogin и ftp.
167
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Включение аутентификации на основе ключа и отключение аутентификации на
основе пароля
Отключение паролей для аутентификации и разрешение использовать только пары
ключей уменьшает вероятность атаки, а также может сэкономить время
пользователей. На клиентах сгенерируйте пары ключей с помощью инструмента sshkeygen и используйте утилиту ssh-copy-id для копирования открытых ключей с
клиентов на сервере OpenSSH. Чтобы отключить проверку подлинности на основе
пароля на сервере OpenSSH, отредактируйте /etc/ssh/sshd_config и измените
параметр PasswordAuthentication на no:
PasswordAuthentication no
Ключевые типы
Хотя команда ssh-keygen по умолчанию генерирует пару ключей RSA, можно указать
ей генерировать ключи ECDSA или Ed25519, используя опцию -t. ECDSA (алгоритм
цифровой подписи с эллиптической кривой) обеспечивает лучшую
производительность, чем RSA, при эквивалентной силе симметричного ключа. Он
также генерирует более короткие ключи. Алгоритм открытого ключа Ed25519
представляет собой реализацию скрученных кривых Эдвардса, которая является
более безопасной, а также более быстрой, чем RSA, DSA и ECDSA.
OpenSSH автоматически создает ключи хоста сервера RSA, ECDSA и Ed25519, если
они отсутствуют. Чтобы настроить создание ключа хоста в SberLinux, используйте
[email protected] созданный сервис. Например, чтобы отключить
автоматическое создание типа ключа RSA:
## systemctl mask [email protected]
Чтобы исключить определенные типы ключей для подключений по SSH,
закомментируйте соответствующие строки в /etc/ssh/sshd_config и перезагрузите
службу sshd. Например, разрешить только ключи хоста Ed25519:
## HostKey /etc/ssh/ssh_host_rsa_key
## HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
Порт, отличающийся от порта по умолчанию
По умолчанию демон sshd прослушивает TCP-порт 22. Изменение порта снижает
подверженность системы атакам, основанным на автоматическом сканировании
168
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
сети, и, таким образом, повышает безопасность за счет скрытности. Можно
указать порт, используя директиву Port в файле конфигурации /etc/ssh/sshd_config.
Также необходимо обновить политику SELinux по умолчанию, чтобы разрешить
использование порта, отличного от порта по умолчанию. Для этого используйте
инструмент semanage из пакета policycoreutils-python-utils:
## semanage port -a -t ssh_port_t -p tcp port_number
Кроме того, обновите конфигурацию межсетевого экрана:
## firewall-cmd --add-port port_number/tcp
## firewall-cmd --runtime-to-permanent
В предыдущих командах замените port_number на новый номер порта, указанный с
помощью директивы Port.
Нет root входа в систему
Если конкретный вариант использования не требует возможности входа в систему
от имени пользователя root, следует рассмотреть возможность установки
директивы конфигурации PermitRootLogin в значение no в файле /etc/ssh/sshd_config.
Отключив возможность входа в систему от имени пользователя root,
администратор может проверить, какие пользователи выполняют
привилегированные команды после того, как они войдут в систему как обычные
пользователи, а затем получат права root пользователя.
В качестве альтернативы установите для PermitRootLogin значение запретитьпароль:
PermitRootLogin prohibit-password
Это обеспечивает принудительное использование аутентификации на основе ключей
вместо использования паролей для входа в систему от имени root пользователя и
снижает риски за счет предотвращения атак методом перебора.
Использование расширения X Security
Сервер X в клиентах SberLinux не предоставляет расширение X Security.
Следовательно, клиенты не могут запрашивать другой уровень безопасности при
подключении к ненадежным SSH-серверам с переадресацией X11.
Большинство приложений в любом случае не могут запускаться с включенным этим
расширением.
169
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
По умолчанию для параметра ForwardX11Trusted в файле /etc/ssh/ssh_config.d/
установлено значение yes, и нет никакой разницы между командами ssh -X
remote_machine (ненадежный хост) и ssh -Y remote_machine (доверенный хост).
Если сценарий вообще не требует функции переадресации X11, установите
директиве X11Forwarding в файле конфигурации /etc/ssh/sshd_config значение no.
Ограничение доступа к определенным пользователям, группам или доменам
Директивы AllowUsers и AllowGroups в файле конфигурации сервера /etc/ssh/sshd_config
позволяют разрешить только определенным пользователям, доменам или группам
подключаться к серверу OpenSSH. Можно объединить AllowUsers и AllowGroups для
более точного ограничения доступа, например:
AllowUsers *@192.168.1.*,*@10.0.0.*,!*@192.168.1.2
AllowGroups example-group
Предыдущие строки конфигурации принимают соединения от всех пользователей из
систем в подсетях 192.168.1.* и 10.0.0.*, за исключением системы с адресом
192.168.1.2. Все пользователи должны быть в группе example-group. Сервер OpenSSH
запрещает все другие подключения.
Обратите внимание, что использование списков разрешений (директивы,
начинающиеся с Allow) более безопасно, чем использование списков блокировок
(параметры, начинающиеся с Deny), поскольку списки разрешений блокируют также
новых неавторизованных пользователей или группы.
Изменение общесистемных криптографических политик
OpenSSH использует общесистемные криптографические политики SberLinux, а
уровень общесистемной криптографической политики по умолчанию предлагает
безопасные настройки для текущих моделей угроз. Чтобы сделать
криптографические настройки более строгими, измените текущий уровень политики:
## update-crypto-policies --set FUTURE
Setting system policy to FUTURE
Чтобы отказаться от общесистемных криптополитик для сервера OpenSSH,
раскомментируйте строку с переменной CRYPTO_POLICY= в файле /etc/sysconfig/sshd.
После этого изменения значения, указанные в модулях Ciphers, MACs, KexAlgorithms и
GSSAPIKexAlgorithms в файле /etc/ssh/sshd_config, не переопределяются. Обратите
внимание, что эта задача требует глубоких знаний в настройке криптографических
опций.
170
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Подключение к удаленному серверу с помощью узла перехода SSH
Используйте эту процедуру для подключения локальной системы к удаленному
серверу через промежуточный сервер, также называемый jump host.
Предварительные условия:
•
•
Узел перехода принимает SSH-соединения из локальной системы.
Удаленный сервер принимает SSH-соединения только от узла перехода.
Процедура:
1.
Определите узел перехода, отредактировав файл ~/.ssh/config в локальной
системе, например:
Host jump-server1 > HostName jump1.example.ru
Параметр Host определяет имя или псевдоним для хоста, который можно
использовать в командах ssh. Значение может соответствовать реальному имени
хоста, но также может быть любой строкой.
Параметр HostName задает фактическое имя хоста или IP-адрес узла перехода.
2.
Добавьте конфигурацию перехода на удаленный сервер с помощью директивы
ProxyJump в файл ~/.ssh/config в локальной системе, например:
Host remote-server
HostName remote1.example.ru
ProxyJump jump-server1
3.
Используйте свою локальную систему для подключения к удаленному серверу
через jump server:
$ ssh remote-server
Предыдущая команда эквивалентна команде удаленного сервера ssh -J jump-server1,
если отпустить шаги настройки 1 и 2.
Примечание: Можно указать больше переходных серверов, а также пропустить
добавление определений хостов в файл конфигурации, при предоставлении их полных
имен хостов, например:
$ ssh -J jump1.example.ru, jump2.example.ru, jump3.example.ru, remote1.example.ru
171
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Измените обозначение только для имени хоста в предыдущей команде, если имена
пользователей или SSH-порты на серверах перехода отличаются от имен и портов
на удаленном сервере, например:
$ ssh -J [email protected]:75,
[email protected]:75,johndoe@[email protected]:75
[email protected]:220
Подключение к удаленным машинам с ключами SSH с помощью ssh-agent
Чтобы избежать ввода парольной фразы каждый раз, когда инициируете SSHсоединение, можно использовать утилиту ssh-agent для кеширования закрытого SSHключа. Закрытый ключ и кодовая фраза остаются в безопасности.
Предварительные условия:
•
•
•
Существует удаленный хост с запущенным SSH-демоном, к которому можно
подключиться по сети.
Известен IP-адрес или имя хоста, а также учетные данные для входа на
удаленный хост.
Сгенерирована пара ключей SSH с парольной фразой и передали открытый ключ
на удаленную машину.
Процедура:
1.
•
При необходимости убедитесь, что можно использовать ключ для
аутентификации на удаленном хосте:
Подключитесь к удаленному хосту с помощью SSH:
$ ssh [email protected] hostname
•
Введите пароль, который задан при создании ключа, чтобы предоставить
доступ к закрытому ключу.
$ ssh [email protected] hostname
host.example.ru
2.
Запустите ssh-агент.
$ eval $(ssh-agent)
Agent pid 20062
3.
Добавьте ключ в ssh-агент.
172
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
$ ssh-add ~/.ssh/id_rsa
Enter passphrase for ~/.ssh/id_rsa:<
Identity added: ~/.ssh/id_rsa ([email protected])
Проверка:
При необходимости войдите в систему при помощи SSH.
$ ssh [email protected]
Last login: Mon Sep 14 12:56:37 2020
Обратите внимание, что не нужно было вводить кодовую фразу.
Введение в Python
Версии Python
Широко используются две несовместимые версии Python, Python 2.x и Python 3.x.
В таблице ниже представлены версии Python в SberLinux.
Таблица. Версии Python в SberLinux
Version
Package to install
Command examples
Python 3.6
python3
python3, pip3
Python 2.7
python2
python2, pip2
Python 3.8
python38
python3.8, pip3.8
Python 3.9
python39
python3.9, pip3.9
Каждая из версий Python распространяется в отдельном модуле, можно настроить и
устанавливать несколько модулей параллельно в одной и той же системе.
Модули python38 и python39 не включают в себя те же привязки к системным
инструментам (RPM, DNF, SELinux и другие), которые предусмотрены для модуля
python36. Поэтому используйте python36 в тех случаях, когда необходима
максимальная совместимость с базовой операционной системой или двоичная
совместимость. В уникальных случаях, когда системные привязки необходимы вместе
с более поздними версиями различных модулей Python, используйте модуль python36 в
сочетании с вышестоящими модулями Python сторонних производителей,
установленными через pip в среде venv или virtualenv Python.
173
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Установка и использование Python
В SberLinux Python 3 распространяется в версиях 3.6, 3.8 и 3.9, предоставляемых
модулями python36, python38 и python39 в репозитории AppStream.
Установка Python 3
Можно установить 8 модулей параллельно, включая модули python27, python36,
python38 и python39. Обратите внимание, что параллельная установка не
поддерживается для нескольких потоков одним модулем.
Можно установить Python 3.8 и Python 3.9, включая пакеты для версии ether,
параллельно с 3.6 в одной и той же системе, за исключением модуля mode_wsgi.
Система может установить два HTTP-сервера Apache, подключенных к сети пакетов
python3-mode_wsgi, python38-mode_wsgi или python39-mod_wsgi.
Процедура:
1.
Чтобы установить Python 3.6 для модуля python36, введите:
## yum install python3
Поток модуля python36:3.6 включается автоматически.
2.
Чтобы установить Python 3.8 для модуля python38, введите:
## yum install python38
Поток модуля Python38:3.8 включается автоматически.
3.
Чтобы установить Python 3.9 для модуля python39, введите:
## yum install python39
Поток модуля Python39:3.9 включается автоматически.
Обзор шагов:
1.
Чтобы проверить версию Python, установленную в системе, используйте
версию python для требуемой версии Python.
Python 3.6:
$ python3 --version
Python 3.8:
174
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
$ python3.8 --version
Python 3.9:
$ python3.9 --version
Установка дополнительных пакетов Python 3
Пакеты с дополнительными модулями для Python 3.6 обычно используют python3префикс, пакеты для Python 3.8 включают python38- префикс, а пакеты для Python 3.9
включают python39- префикс. Всегда включайте префикс при установке
дополнительных пакетов Python, как показано в примерах ниже.
Процедура:
1.
Чтобы установить модуль запросов для Python 3.6, используйте:
## yum install python3-requests
2.
Чтобы установить расширение Cython на Python 3.8, используйте:
## yum install python38-Cython
3.
Чтобы установить установщик пакета pip из Python 3.9, используйте:
## yum install python39-pip
Установка дополнительных инструментов Python 3 для разработчиков
Дополнительные инструменты Python для разработчиков распространяются через
репозиторий Code Ready Linux Builder в соответствующем модуле python3x-devel.
Модуль python38-devel содержит пакет python 38-pytest и его зависимости: пакеты
pyparsing, atomic writes, attrs, packaging, py, more-itertools, pluggy и wcwidth.
Модуль python39-devel содержит пакет python 39-pytest и его зависимости: пакеты
pyparsing, attrs, packaging, py, more-itertools, pluggy, wcwidth, iniconfig и pybind11.
Модуль python 39-devel также содержит пакеты python 39-debug и python 39-Cython.
Примечание: Репозиторий Code Ready Linux Builder и его содержимое не
поддерживаются SberLinux.
175
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Чтобы установить пакеты из модуля python39-devel, используйте следующую
процедуру.
Процедура:
1.
Включите репозиторий Code Ready Linux Builder:
## subscription-manager repos --enable codeready-builder-for-sberlinux-8-x86_64-rpms
2.
Включите python39-devel модуль:
## yum module enable python39-devel
3.
Установите python 39-pytest пакет:
## yum install python39-pytest
Чтобы установить пакеты из модуля python38-devel, замените python 39- на python
38- в приведенных выше командах.
Установка Python 2
Некоторые приложения и скрипты еще не были полностью перенесены на Python 3 и
требуют запуска Python 2. SberLinux допускает параллельную установку Python 3 и
Python 2. Если нужна функциональность Python 2, установите модуль python27,
который доступен в репозитории AppStream.
Предупреждение: Python 3 является основным направлением разработки проекта
Python. Поддержка Python 2 постепенно прекращается. Модуль python27 имеет более
короткий период поддержки, чем SberLinux.
Процедура:
1.
Чтобы установить Python 2.7 из модуля python27, используйте:
## yum install python2
Поток модуля python27:2.7 включается автоматически.
Пакеты с дополнительными модулями для Python 2 обычно используют python2префикс. Всегда включайте префикс при установке дополнительных пакетов Python,
как показано в примерах ниже.
2.
Чтобы установить модуль запросов для Python 2, используйте:
176
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## yum install python2-requests
3.
Чтобы установить расширение Cython на Python 2, используйте:
## yum install python2-Cython
Этапы проверки:
1.
Чтобы проверить версию Python, установленную в системе, используйте:
$ python2 --version
Примечание: По замыслу можно устанавливать модули SberLinux параллельно,
включая модули python27, python36, python38 и python39.
Переход с Python 2 на Python 3
Можно перенести свой прежний код, написанный на Python 2, на Python 3.
Обратите внимание, что после этой миграции исходный код Python 2 становится
интерпретируемым интерпретатором Python 3 и остается интерпретируемым и
для интерпретатора Python 2.
Использование Python
При запуске интерпретатора Python или команд, связанных с Python, всегда
указывайте версию.
Предварительные условия:
Убедитесь, что установлена требуемая версия Python.
Процедура:
1.
Чтобы запустить интерпретатор Python 3.6 или связанные с ним команды,
используйте, например:
$ python3
$ python3 -m cython --help
$ pip3 install package
Чтобы запустить интерпретатор Python 3.8 или связанные с ним команды,
используйте, например:
177
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
$ python3.8
$ python3.8 -m cython --help
$ pip3.8 install package
Чтобы запустить интерпретатор Python 3.9 или связанные с ним команды,
используйте, например:
$ python2
$ python2 -m cython --help
$ pip2 install package
Начало работы с веб-консолью
Установите веб-консоль и добавьте удаленные хосты, чтобы контролировать их в
веб-консоли SberLinux.
Предварительные условия:
•
•
Установлен SberLinux.
Включено подключение к сети.
Веб-консоль Sberlinux
Веб-консоль разработана для управления и мониторинга локальной системы, а
также Linux-серверов, расположенных в сетевой среде.
Веб-консоль позволяет решать широкий спектр задач по администрированию, в том
числе:
•
•
•
•
•
•
•
•
•
•
•
Услуги по управлению.
Управление учетными записями пользователей.
Услуги систем управления и мониторинга.
Настройку сетевых интерфейсов и межсетевого экрана.
Журналы системы просмотра.
Управление виртуальными машинами.
Создание диагностических отчетов.
Установку конфигурации dump ядра.
Настройку SELinux.
Обновление программного обеспечения.
Подписки на системы управления.
Веб-консоль использует те же системные API, что и терминал, а действия,
выполняемые в терминале, немедленно отражаются в веб-консоли.
178
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Можно контролировать журналы систем в сетевом окружении, а также их
производительность, отображаемые в виде графиков. Кроме того, можно изменить
настройки непосредственно в веб-консоли или через терминал.
Установка и включение веб-консоли
Для доступа к веб-консоли сначала включите сервис cockpit.socket.
SberLinux включает веб-консоль, установленную по умолчанию во многих вариантах
установки. Если это не так в системе, установите пакет cockpit перед включением
сервиса cockpit.socket.
Процедура
1.
Если веб-консоль не установлена по умолчанию в варианте установки, вручную
установите пакет cockpit:
## yum install cockpit
2.
Включите и запустите службу cockpit.socket, которая запускает веб-сервер:
## systemctl enable --now cockpit.socket
3.
Если веб-консоль не была установлена по умолчанию в варианте установки, при
использовании пользовательского профиля межсетевого экрана, добавьте
сервис cockpit на firewalld, чтобы открыть в межсетевом экране порт 9090:
## firewall-cmd --add-service=cockpit --permanent
## firewall-cmd --reload
179
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Рисунок. Cockpit установлен
Шаги проверки:
1.
Чтобы проверить предыдущую установку и конфигурацию, откройте вебконсоль.
Вход в веб-консоль
Используйте шаги этой процедуры для первого входа в веб-консоль с использованием
системного имени пользователя и пароля.
Предварительные условия:
•
•
Используйте один из следующих браузеров для открытия веб-консоли:
– Mozilla Firefox 52 и более поздние версии;
– Google Chrome 57 и более поздние версии;
– Microsoft Edge 16 и более поздние.
Учетные данные системного пользователя:
– Веб-консоль использует специфический стек PAM, расположенный по
адресу /etc/pam.d/cockpit.
180
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
–
Аутентификация с помощью PAM позволяет войти в систему под именем
пользователя и паролем любой локальной учетной записи в системе.
Процедура:
1.
•
•
•
2.
Откройте веб-консоль в веб-браузере:
Локально https://localhost:9090
Удаленно с именем хоста сервера https://example.ru:9090
Удаленно с IP-адресом сервера https://192.0.2.2:9090 Если используется
самоподписанный сертификат, браузер выдает предупреждение. Проверьте
сертификат, и примите исключение безопасности для входа в систему. Консоль
загружает сертификат из директории /etc/cockpit/ws-certs.d и использует
последний файл с расширением .cert в алфавитном порядке. Чтобы избежать
необходимости предоставления исключений по безопасности, установите
сертификат, подписанный центром сертификации (CA).
На экране входа в систему введите имя пользователя и пароль.
3.
В качестве опции нажмите на опцию Reuse my password for privileged tasks. Если
учетная запись пользователя, которую используете для входа в систему,
имеет sudo-привилегии, это позволяет выполнять привилегированные задачи в
веб-консоли, такие, как установка программного обеспечения или настройка
SELinux.
4.
Нажмите на Log In.
После успешной аутентификации открывается консольный веб-интерфейс.
Подключение к веб-консоли с удаленной машины
Подключение к веб-консольному интерфейсу возможно как с любой клиентской
операционной системы, так и с мобильных телефонов или планшетов.
Предварительные условия:
•
•
Устройство с поддерживаемым интернет-браузером:
Сервер, к которому можно получить доступ с установленной и доступной вебконсолью. Более подробную информацию об установке веб-консоли смотрите в
разделе «Установка и включение веб-консоли».
Процедура:
1.
Откройте веб-браузер.
2.
Введите адрес удаленного сервера в одном из следующих форматов:
•
•
С именем хоста сервера server.hostname.example.ru:port_number.
С IP-адресом сервера server.IP_address:port_number.
181
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
3.
После того как откроется интерфейс для входа в систему, войдите в систему
с учетными данными машины.
Подготовка управляемых узлов и узлов управления к использованию системных
ролей
Введение в системные роли
Системные роли — это набор ролей и модулей Ansible. Системные роли
предоставляют интерфейс конфигурации для удаленного управления несколькими
системами SberLinux. Интерфейс позволяет управлять конфигурациями системы в
нескольких версиях, а также внедрять новые мажорные релизы.
В SberLinux интерфейс состоит из следующих ролей:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Выдача и продление сертификата (certificate)
Кокпит (cockpit)
Межсетевой экран (firewall)
Кластер высокой готовности (ha_cluster)
dump ядра (kdump)
Настройки ядра (kernel_settings)
Ведение журнала (logging)
Показатели (PCP) (metrics)
Microsoft SQL Server (microsoft.sql.server)
Сеть (network)
Клиент Network Bound Disk Encryption и сервер Network Bound Disk Encryption
(nbde_client и nbde_server)
Постфикс (postfix)
СЕЛинукс (selinux)
SSH-клиент (ssh)
SSH-сервер (sshd)
Хранение (storage)
Запись сеанса терминала (tlog)
Синхронизация времени (timesync)
VPN (vpn)
Подготовка узла управления
Процедура
1.
Установите sberlinux-system-roles пакет:
[root@control-node]# yum install sberlinux-system-roles
182
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Эта команда устанавливается Ansible Core как зависимость.
2.
Создайте пользователя, которого позже будете использовать для управления и
выполнения playbook:
[root@control-node]# useradd ansible
3.
Переключитесь на только что созданного ansible пользователя:
[root@control-node]# su - ansible
Выполните оставшуюся часть процедуры от имени этого пользователя.
4.
Создайте открытый и закрытый ключ SSH:
[ansible@control-node]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ansible/.ssh/id_rsa): password
...
Используйте предлагаемое расположение по умолчанию для файла ключа.
5.
При необходимости настройте агент SSH, чтобы Ansible не запрашивал пароль
ключа SSH каждый раз, когда соединение устанавливается.
6.
Создайте ~/.ansible.cfg файл со следующим содержимым:
[defaults]
inventory = /home/ansible/inventory
remote_user = ansible
[privilege_escalation]
become = True
become_method = sudo<
become_user = root
become_ask_pass = True
С этими настройками:
•
•
•
Ansible управляет хостами в указанном файле inventory.
Ansible использует учетную запись, указанную в remote_user параметре, при
установке SSH-соединений с управляемыми узлами.
Ansible использует sudo утилиту для выполнения задач на управляемых узлах от
имени root-пользователя. Из соображений безопасности настройте sudo на
183
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
управляемых узлах в виде требования введения пароля удаленного
пользователя, чтобы стать root пользователем. Укажите
become_ask_pass=True параметр в ~/.ansible.cfg, и Ansible запросит пароль при
выполнении playbook.
Настройки в ~/.ansible.cfg файле имеют более высокий приоритет и переопределяют
настройки из глобального /etc/ansible/ansible.cfg файла.
Создайте ~/inventory файл. Например, ниже представлен файл inventory в формате INI
с тремя хостами и одной группой хостов с именем RU:
managed-node-01.example.ru [RU]
managed-node-02.example.ru ansible_host=192.0.2.100
managed-node-03.example.ru
Обратите внимание, что управляющий узел должен иметь возможность разрешать
имена хостов. Если DNS-сервер не может разрешить определенные имена хостов,
добавьте параметр рядом с записью хоста, чтобы указать его IP-адрес.
Дополнительные ресурсы:
Справочная страница: ssh-keygen(1).
Подготовка управляемого узла
Ansible не использует агент на управляемых хостах. Единственными требованиями
являются Python, который по умолчанию установлен на SberLinux, и SSH-доступ к
управляемому хосту.
Однако прямой доступ по SSH от имени root пользователя может представлять
угрозу безопасности. После чего Ansible может использовать эту учетную запись:
•
•
для входа в управляющий узел;
выполнения playbook от имени разных пользователей, например root
пользователя.
Предварительные условия:
Подготовлен узел управления.
Процедура:
1.
Создайте пользователя:
[root@managed-node-01]# useradd ansible
184
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Позже управляющий узел использует этого пользователя для установления
соединения SSH с этим хостом.
2.
Установите пароль для ansible пользователя:
[root@managed-node-01]# passwd ansible
Changing password for user ansible.
New password: password
Retype new password: password
passwd: all authentication tokens updated successfully.
Необходимо ввести этот пароль, когда Ansible использует sudo для выполнения задач
от имени root пользователя.
1.
•
Установите ansible открытый SSH-ключ пользователя на управляемом узле:
Войдите на управляющий узел как ansible пользователь и скопируйте открытый
ключ SSH на управляемый узел:
[ansible@control-node]$ ssh-copy-id managed-node-01.example.ru /usr/bin/ssh-copy-id: INFO:
Source of key(s) to be installed:
"/home/ansible/.ssh/id_rsa.pub"
The authenticity of host 'managed-node-01.example.ru (192.0.2.100)' can't be established.
ECDSA key fingerprint is SHA256:9bZ33GJNODK3zbNhybokN/6Mq7hu3vpBXDrCxe7NAvo.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already
installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install
the new keys
[email protected]'s password: password
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'managed-node-01.example.ru'"
and check to make sure that only the key(s) you wanted were added.
•
Удаленно выполните команду на узле управления, чтобы проверить соединение
SSH:
[ansible@control-node]$ ssh managed-node-01.example.ru whoami
ansible
2.
•
Создайте sudo конфигурацию для ansible пользователя:
Используйте visudo команду для создания и редактирования
/etc/sudoers.d/ansible файла:
185
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
[root@managed-node-01]# visudo /etc/sudoers.d/ansible
Преимущество использования visudo по сравнению с обычным редактором
заключается в том, что эта утилита обеспечивает базовые проверки
работоспособности и проверяет наличие ошибок синтаксического анализа перед
установкой файла.
•
Введите в /etc/sudoers.d/ansible файл следующее содержимое:
ansible ALL=(ALL) NOPASSWD: ALL
Эти настройки предоставляют ansible пользователю права запускать все команды
от имени любого пользователя и группы на этом хосте без ввода пароля ansible
пользователя.
Дополнительные ресурсы:
Справочная страница: sudoers(5).
Проверка доступа с узла управления к управляемым узлам
После настройки узла управления и подготовки управляемых узлов проверьте, может
ли Ansible подключаться к управляемым узлам.
Выполните эту процедуру как ansibleпользователь на узле управления.
Предварительные условия:
•
•
•
Подготовлен узел управления.
Подготовлен как минимум один управляемый узел.
Если можно запускать playbook на группах хостов, управляемый узел указан в
файле inventory на узле управления.
Процедура:
1.
Используйте модуль Ansible ping, чтобы убедиться, что можно выполнять
команды на всех управляемых хостах:
[ansible@control-node]$ ansible all -m ping
BECOME password: password
managed-node-01.example.ru | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
186
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
"ping": "pong"
}
...
2.
Закодированная all группа хостов динамически содержит все хосты,
перечисленные в файле inventory.
3.
Используйте command модуль Ansible для запуска whoami утилиты на
управляемом хосте:
[ansible@control-node]$ ansible managed-node-01.example.ru -m command -a whoami
BECOME password: password
managed-node-01.example.ru | CHANGED | rc=0 >>
root
Если команда возвращает root права, значит, sudo настроен правильно на
управляемых узлах и работает повышение привилегий.
Дополнительные ресурсы:
Справочная страница: ssh-keygen(1).
Управление службами сетевой инфраструктуры
Установка и настройка DNS-сервера BIND
Система доменных имен (DNS) - это метод, используемый для перевода
удобочитаемых доменных имен (или полных доменных имен (FQDN)) в машиночитаемые
IP-адреса для определения местоположения машины в сети, такой как Интернет.
В компьютерных и сетевых системах это необходимо, потому что, хотя людям легко
запомнить и использовать полные доменные имена, компьютеры (клиенты) получают
доступ к ресурсам или службам на других компьютерах (серверах) на основе IPадресов.
В связи с этим DNS-сервер (также известный как сервер имен) поддерживает
каталог полных доменных имен и переводит их в IP-адреса; он также может
возвращать IP-адрес, если указано имя хоста/полное доменное имя. Существуют
различные типы DNS-серверов, включая авторитетный сервер имен, кеширующий
сервер имен и многие другие.
Процедура:
1.
Чтобы установить bind и его утилиты на сервер, выполните следующую
команду cdnf.
187
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## dnf install bind bind-utils
Рисунок. Команда cdnf
2.
Запустите службу DNS, включите автоматический запуск при загрузке системы
и проверьте с помощью команды systemctl, запущена ли она.
## systemctl start named
## systemctl enable named
## systemctl status named
Рисунок. systemctl start named
3.
Чтобы настроить DNS-сервер Bind, сделайте резервную копию исходного файла
конфигурации /etc/ named.conf, используя команду cp.
188
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## cp /etc/named.conf /etc/named.conf.orig
4.
Откройте файл конфигурации /etc/ named.conf для редактирования с помощью
текстового редактора командной строки, как показано ниже.
## vi /etc/named.conf
В разделе конфигурации options закомментируйте следующие строки.
options {
#listen-on port 53 { 127.0.0.1; };
#listen-on-v6 port 53 { ::1; };
directory "/var/named";
5.
Найдите параметр allow-query и установите его значение для сети, чтобы
только хосты в настроенной локальной сети могли запрашивать DNS-сервер.
allow-query {localhost; 192.168.56.0/24}
Зона пересылки - это место, где хранятся отношения между именем хоста (или FQDN)
и IP-адресом; он возвращает IP-адрес, используя имя хоста. Обратите внимание, что
обычные запросы DNS являются запросами прямого просмотра. С другой стороны,
обратная зона возвращает полное доменное имя хоста на основе его IP-адреса.
6.
Чтобы определить прямую и обратную зоны, добавьте следующие строки в
конец файла /etc/ named.conf.
//forward zone
zone "tecmint.lan" IN {
type master;
file "tecmint.lan.db";
allow-update { none; };
allow-query {any; }
};
//backward zone
zone "56.168.192.in-addr.arpa" IN {
type master;
file "tecmint.lan.rev";
allow-update { none; };
allow-query { any; }
};
189
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Параметры в конфигурациях вышеупомянутых зон:
•
•
•
7.
type: определяет роль этого сервера для зоны. Значение master означает, что
это полномочный сервер, на котором хранится главная копия данных зоны.
file: указывает файл базы данных зоны.
allow-update: указывает узлы, которым разрешено отправлять обновления
динамического DNS для основных зон. В данном случае нет.
Создайте файл зоны пересылки в каталоге /var/named.
## vi /var/named/tecmint.lan.db
Добавьте в него следующую конфигурацию.
$TTL 86400
@ IN SOA dns-primary.tecmint.lan. admin.tecmint.lan. (
2019061800 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
;Name Server Information
@ IN NS dns-primary.tecmint.lan.
;IP for Name Server
dns-primary IN A 192.168.56.100
;A Record for IP address to Hostname
www IN A 192.168.56.5
mail IN A 192.168.56.10
docs IN A 192.168.56.20
•
•
•
•
•
TTL: указывает время действия RR, а директива $TTL дает значение TTL по
умолчанию для каждого RR без определенного набора TTL.
@: это псевдоним для имени домена (например, tecmint.lan), определенного в
основном файле конфигурации.
IN: означает Интернет.
SOA: указывает начало полномочий: авторитетный сервер имен (dnsprimary.tecmint.lan), контактную информацию администратора
(admin.tecmint.lan, знак @ заменяется точкой) и другие связанные информация.
NS: означает сервер имен.
190
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
•
•
•
•
8.
Serial: это значение используется DNS-сервером для проверки актуальности
содержимого определенного файла зоны.
Refresh: указывает, как часто подчиненный DNS-сервер должен выполнять
передачу зоны от главного.
Retry: указывает, как часто ведомое устройство должно повторять неудачную
передачу зоны.
Expire: определяет, как долго подчиненный сервер должен ждать перед ответом
на запрос клиента, когда главный сервер недоступен.
Minimum TTL: устанавливает минимальный TTL для зоны.
A: адрес хоста.
Аналогичным образом создайте файл обратной зоны в каталоге /var/named.
## vi /var/named/tecmint.lan.rev
9.
Добавьте в него следующие строки. Здесь PTR - это противоположность записи
A, используемой для сопоставления IP-адреса с именем хоста.
$TTL 86400
@ IN SOA dns-primary.tecmint.lan. admin.tecmint.lan. (
2019061800 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
;Name Server Information
@ IN NS dns-primary.tecmint.lan.
;Reverse lookup for Name Server
100 IN PTR dns-primary.tecmint.lan.
;PTR Record IP address to HostName
5 IN PTR www.tecmint.lan.
10 IN PTR mail.tecmint.lan.
20 IN PTR docs.tecmint.lan.
10. Установите правильные права собственности на файлы зоны, как показано
ниже.
## chown :named /var/named/tecmint.lan.db
## chown :named /var/named/tecmint.lan.rev
191
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
11. Наконец, проверьте конфигурацию DNS и правильность синтаксиса файлов зоны
после внесения вышеуказанных изменений с помощью утилиты named-checkconf
(отсутствие выхода означает отсутствие ошибки):
## named-checkconf
## named-checkzone tecmint.lan /var/named/tecmint.lan.db
## named-checkzone 192.168.56.100 /var/named/tecmint.lan.rev
Рисунок. Утилита named-checkconf
12. После того как выполнится вся необходимая настройка, необходимо
перезапустить службу DNS, чтобы последние изменения вступили в силу.
## systemctl restart named
13. Затем, прежде чем какие-либо клиенты смогут получить доступ к
конфигурациям службы DNS на сервере, необходимо добавить службу DNS в
конфигурацию системного межсетевого экрана и перезагрузить настройки
межсетевого экрана с помощью служебной программы firewall-cmd следующим
образом:
## firewall-cmd --permanent --zone=public --add-service=dns
## firewall-cmd --reload
14. Откройте файл /etc/resolve.conf с помощью текстового редактора.
## vi /etc/resolve.conf
15. Добавьте в него следующую запись, которая сообщает преобразователю
использовать указанный сервер имен.
nameserver 192.168.56.100
16. Сохраните файл и закройте его. Обратите внимание, что также необходимо
указать DNS-сервер в файле конфигурации сетевого интерфейса.
192
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
17. Добавьте IP-адрес DNS-сервера 192.168.56.100 в качестве преобразователя в
файл конфигурации сетевого интерфейса /etc/sysconfig/network-scripts/ifcfgenp0s3 клиентского компьютера.
18. Используйте утилиту nslookup для запроса IP-адреса с использованием имени
хоста и, наоборот, серверов www, почты и документации в сети.
Защита BIND с помощью SELinux или его запуск в среде с измененным root
Чтобы обеспечить надежную установку привязки BIND, запустите именованную
службу без изменения корневой среды. В этом случае SELinux в принудительном
режиме предотвращает использование известных уязвимостей безопасности BIND.
По умолчанию SberLinux использует SELinux в принудительном режиме.
Примечание: Запуск BIND на SberLinux с SELinux в принудительном режиме более
безопасен, чем запуск BIND в среде с измененным root.
1.
Запустите службу named-chroot в среде с измененным root.
Используя функцию изменения корневого каталога, администраторы могут
определить, что корневой каталог процесса и его подпроцессов отличается от
каталога /. Когда запускается служба named-chroot, BIND переключает ее корневой
каталог на /var/named/chroot/. Как следствие, служба использует команды mount –
bind для создания файлов и каталогов, перечисленных в /etc/named-chroot. Эти файлы
доступны в /var/named/chroot/, и процесс не имеет доступа к файлам за пределами
/var/named/chroot/.
Для использования BIND:
В обычном режиме используйте именованную службу.
В среде с измененным root используйте службу named-chroot. Для этого необходимо
дополнительно установить пакет named-chroot.
Справочное руководство администратора BIND
Всесторонний BIND Administrator Reference Manual, который включен в bind пакет,
обеспечивающий:
•
•
•
•
примеры конфигурации;
документацию по расширенным функциям;
ссылку на конфигурацию;
соображения безопасности.
Для отображения BIND Administrator Reference Manual на хосте, который имеет bind
пакет установлен, откройте /usr/share/doc/bind/Bv9ARM.html файл в браузере.
193
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Настройка BIND в качестве кеширующего DNS-сервера
По умолчанию DNS-сервер BIND разрешает и кеширует успешные и неудачные
запросы. Затем служба отвечает на запросы к тем же записям из своего кеша. Это
значительно повышает скорость поиска в DNS.
Предварительные условия:
IP-адрес сервера является статическим.
Процедура:
1.
Установите bind bindutils и пакеты:
## yum install bind bind-utils
Эти пакеты предоставляют BIND 9.11. Если требуется BIND 9.16, установите
bind9.16bind9.16-утилиты и пакеты.
2.
Если можно запустить BIND в среде с измененным root, установите пакет bindchroot:
## yum install bind-chroot
Обратите внимание, что запуск BIND на хосте с SELinux в принудительном режиме,
который установлен по умолчанию, является более безопасным.
3.
•
Отредактируйте файл /etc/named.conf и внесите следующие изменения в
options инструкцию:
Обновите инструкции listen-on, listen-on-v6, чтобы указать, какие интерфейсы
IPv4 и IPv6 должны прослушиваться BIND:
listen-on port 53 { 127.0.0.1; 192.0.2.1; };
listen-on-v6 port 53 { ::1; 2001:db8:1::1; };
•
Разрешите запрос, чтобы настроить, с каких IP-адресов и диапазонов клиенты
могут запрашивать этот DNS-сервер:
allow-query { localhost; 192.0.2.0/24; 2001:db8:1::/64; };
•
Добавьте оператор allow-recursion, чтобы определить, с каких IP-адресов и
диапазонов BIND принимает рекурсивные запросы:
allow-recursion { localhost; 192.0.2.0/24; 2001:db8:1::/64; };
194
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Предупреждение: Не разрешайте рекурсию по общедоступным IP-адресам сервера. В
противном случае сервер может стать частью крупномасштабных атак по усилению
DNS.
•
По умолчанию BIND разрешает запросы путем рекурсивного запроса от
корневых серверов к авторитетному DNS-серверу. В качестве альтернативы
можно настроить привязку для пересылки запросов на другие DNS-серверы,
например, установленного провайдера. В этом случае добавьте инструкцию
forwarders со списком IP-адресов DNS-серверов, на которые BIND должен
пересылать запросы:
forwarders { 198.51.100.1; 203.0.113.5; };
В качестве запасного варианта BIND разрешает запросы рекурсивно, если серверы
пересылки не отвечают. Чтобы отключить это поведение, добавьте оператор
forward only;
5.
Проверьте синтаксис файла /etc/named.conf:
## named-checkconf
Если команда не выводит никаких выходных данных, синтаксис правильный.
6.
Обновите правила межсетевого экрана, чтобы разрешить входящий DNSтрафик:
## firewall-cmd --permanent --add-service=dns
## firewall-cmd --reload
7.
Запустите и включите BIND:
## systemctl enable --now named
Если можно запустить BIND в среде с измененным root, используйте команду systemctl
enable –now named-chroot для включения и запуска службы.
Проверка:
1.
Используйте недавно настроенный DNS-сервер для разрешения домена:
## dig @localhost www.example.org
...
www.example.org. 86400 IN A 198.51.100.34
195
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
;; Query time: 917 msec
...
В этом примере предполагается, что BIND выполняется на том же хосте и отвечает
на запросы в localhost интерфейсе.
После первого запроса записи BIND добавляет запись в свой кеш.
2.
Повторите предыдущий запрос:
## dig @localhost www.example.org
...
www.example.org. 85332 IN A 198.51.100.34
;; Query time: 1 msec
...
Из-за кешированной записи дальнейшие запросы к той же записи выполняются
значительно быстрее, пока срок действия записи не истечет.
Следующие шаги:
Настройте клиентов в сети на использование этого DNS-сервера. Если DHCP-сервер
предоставляет клиентам настройки DNS-сервера, соответствующим образом
обновите конфигурацию DHCP-сервера.
Настройка ведения журнала на DNS-сервере BIND
Конфигурация в файле /etc/named.conf по умолчанию, предоставляемая пакетом bind,
использует канал default_debug и записывает сообщения в /var/named/data/named.run
файл. Канал Default_debug регистрирует записи только тогда, когда уровень
отладки сервера отличен от нуля.
Используя различные каналы и категории, можно настроить BIND для записи
различных событий с серьезностью Syslog в отдельные файлы.
Предварительные условия:
•
•
BIND уже настроен, например, как кеширующий сервер имен.
Запущена служба named или named-chroot.
Процедура:
1.
Отредактируйте файл /etc/named.conf и добавьте канал категории и фразы в
инструкцию ведения журнала, например:
logging {
196
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
...
category notify { zone_transfer_log; };
category xfer-in { zone_transfer_log; };
category xfer-out { zone_transfer_log; };
channel zone_transfer_log {
file "/var/named/log/transfer.log" versions 10 size 50m;
print-time yes;
print-category yes;
print-severity yes;
severity info;
};
...
};
В этом примере конфигурации BIND регистрирует сообщения, связанные с переносами
зон, в /var/named/log/transfer.log. BIND создает до 10 версий файла журнала и
изменяет их, если они достигают максимального размера 50 Мбайт.
Фраза категории определяет, по каким каналам BIND отправляет сообщения
определенной категории.
Фраза канала определяет назначение сообщений журнала, включая количество
версий, максимальный размер файла и уровень серьезности, с которым нужно
регистрироваться в канале. Дополнительные настройки, такие как включение
регистрации метки времени, категории и серьезности события, необязательны, но
полезны для целей отладки.
2.
Создайте каталог журнала, если он не существует, и предоставьте
разрешения на запись именованному пользователю в этом каталоге:
## mkdir /var/named/log/
## chown named:named /var/named/log/
## chmod 700 /var/named/log/
Проверьте синтаксис файла /etc/named.conf:
## named-checkconf
Если команда не выводит никаких выходных данных, синтаксис правильный.
197
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
4.
Перезапустите BIND:
## systemctl restart named
Если BIND запускается в среде с измененным root, используйте команду systemctl
restart named-chroot для перезапуска службы.
Проверка:
Отображение содержимого файла журнала:
## cat /var/named/log/transfer.log
...
06-Jul-2022 15:08:51.261 xfer-out: info: client @0x7fecbc0b0700 192.0.2.2#36121/key exampletransfer-key (example.ru): transfer of 'example.ru/IN':
AXFR started: TSIG example-transfer-key (serial 2022070603)
06-Jul-2022 15:08:51.261 xfer-out: info: client @0x7fecbc0b0700 192.0.2.2#36121/key exampletransfer-key (example.ru): transfer of 'example.ru/IN':
AXFR ended
Написание ACL BIND
Контроль доступа к определенным функциям BIND может предотвратить
несанкционированный доступ и атаки, такие как отказ в обслуживании (DoS).
Инструкции BIND access control list (acl) представляют собой списки IP-адресов и
диапазонов. Каждый список управления доступом имеет псевдоним, который можно
использовать в нескольких операторах, например, allow-query, для ссылки на
указанные IP-адреса и диапазоны. Предупреждение: BIND использует только первую
соответствующую запись в списке управления доступом. Например, если
определяется список управления доступом { 192.0.2/24; !192.0.2.1; } и подключается
хост с IP-адресом 192.0.2.1, доступ предоставляется, даже если вторая запись
исключает этот адрес.
BIND имеет следующие встроенные списки управления доступом:
•
•
•
•
none: Не соответствует ни одному хосту.
any: Соответствует всем хостам.
localhost: Соответствует адресам обратной 127.0.0.1 связи и ::1, а также IPадресам всех интерфейсов на сервере, на котором выполняется привязка.
localnets: Соответствует адресам обратной 127.0.0.1 связи и ::1, а также всем
подсетям, к которым напрямую подключен сервер, где выполняется привязка.
Предварительные условия:
•
BIND уже настроена, например, как сервер имен кеширования.
198
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
Служба namedor named-chroot запущена.
Процедура:
1.
•
Отредактируйте файл /etc/named.conf и внесите следующие изменения:
Добавьте acl инструкции в файл. Например, чтобы создать список управления
доступом с именем internal-networks для 127.0.0.1, 192.0.2.0/24, и 2001:db8:1::/64,
введите:
acl internal-networks { 127.0.0.1; 192.0.2.0/24; 2001:db8:1::/64; }
acl dmz-networks { 198.51.100.0/24; 2001:db8:2::/64; };
•
Используйте псевдоним ACL в операторах, которые их поддерживают,
например:
allow-query { internal-networks; dmz-networks; };
allow-recursion { internal-networks; };
•
Проверьте синтаксис файла /etc/named.conf:
## named-checkconf
Если команда не выводит никаких выходных данных, значит, синтаксис правильный.
•
Перезагрузите BIND:
## systemctl reload named
Если запускаете BIND в среде с измененным root, используйте команду systemctl reload
named-chroot для перезагрузки службы.
Проверка:
•
Выполните действие, которое запускает функцию, использующую настроенный
список управления доступом. Например, список управления доступом в этой
процедуре допускает только рекурсивные запросы с определенных IP-адресов. В
этом случае введите следующую команду на узле, который не входит в
определение списка управления доступом, чтобы попытаться разрешить
внешний домен:
## dig +short @192.0.2.1 www.example.ru
199
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Если команда не возвращает выходные данные, BIND отказывает в доступе, и ACL
работает. Для подробного вывода на клиенте используйте команду без +short
параметра:
## dig @192.0.2.1 www.example.ru
...
;; WARNING: recursion requested but not available
...
Настройка зон на DNS-сервере BIND
Зона DNS - это база данных с записями ресурсов для определенного поддерева в
доменном пространстве. Например, если необходима ответственность за example.ru
домен, можно настроить для него зону в BIND. В результате клиенты могут перейти
www.example.ru на IP-адрес, настроенный в этой зоне.
Запись SOA в файлах зон
Запись начала полномочий (SOA) является обязательной записью в зоне DNS. Эта
запись важна, например, если несколько DNS-серверов являются авторитетными для
зоны, а также для DNS-преобразователей.
Запись SOA в BIND имеет следующий синтаксис:
name class type mname rname serial refresh retry expire minimum
Для удобства чтения администраторы обычно разделяют запись в файлах зон на
несколько строк с комментариями, начинающимися с точки с запятой (;). Обратите
внимание, что при разделении записи SOA круглые скобки сохраняют запись вместе:
@ IN SOA ns1.example.ru. hostmaster.example.ru. (
2022070601 ; serial number
1d
; refresh period
3h
; retry period
3d
; expire time
3h ) ; minimum TTL
Примечание: Обратите внимание на точку в конце полных доменных имен. Полные
доменные имена состоят из нескольких меток доменов, разделенных точками.
Поскольку корневой каталог DNS имеет пустую метку, полные доменные имена
заканчиваются точкой. Таким образом, BIND добавляет имя зоны к именам без
конечной точки. Например, имя хоста без конечной точки ns1.example.ru будет
200
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
расширено до ns1.example.ru.example.ru, что не является правильным адресом
основного сервера имен.
Поля в записи SOA:
•
•
•
•
•
•
•
•
•
•
name: Название зоны, так называемой origin. Если задать значение этому полю
@, BIND расширит его до имени зоны, определенного в /etc/named.conf.
class: В записях SOA нужно всегда устанавливать для этого поля значение
Internet (IN).
type: В записях SOA нужно всегда устанавливать это поле равным SOA.
mname (главное имя): имя хоста основного сервера имен этой зоны.
rname (имя ответственного): адрес электронной почты ответственного за
эту зону. Обратите внимание, что формат отличается. Можно должны
заменить знак at (@) точкой (.).
serial: Номер версии этого файла зоны. Вторичные серверы имен обновляют
свои копии зоны только в том случае, если серийный номер на основном сервере
выше. Формат может быть любым числовым значением. Обычно используемый
формат - это year >< month >< day ><two-digit-number. С помощью этого
формата можно, теоретически, изменять файл зоны до ста раз в день.
refresh: Количество времени, которое вторичные серверы должны ждать,
прежде чем проверять основной сервер на предмет обновления зоны.
retry: Количество времени, через которое вторичный сервер повторяет
попытку запроса к основному серверу после неудачной попытки.
expire: Количество времени, через которое вторичный сервер прекращает
запрашивать основной сервер, если все предыдущие попытки не увенчались
успехом.
minimum: RFC 2308 изменил значение этого поля на отрицательное время
кеширования. Кеширующие распознаватели используют его, чтобы определить,
как долго кешировать NXDOMAIN ошибки имен.
Примечание: Числовое значение в полях refresh, retry, expire, и minimum определяет
время в секундах. Однако для лучшей читаемости используйте временные суффиксы,
такие как m для минуты, h для часов и d для дней. Например, 3h выдерживается 3
часа.
Настройка зоны переадресации на основном сервере BIND
Перенаправление зон сопоставляет имена с IP-адресами и другой информацией.
Например, если необходима ответственность за домен example.ru, можно настроить
зону пересылки в BIND для разрешения имен, таких как www.example.ru.
Предварительные условия
•
•
BIND уже настроена, например, как сервер имен кеширования.
Служба namedor named-chroot запущена.
201
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Процедура
1.
Добавьте определение зоны в файл /etc/named.conf:
zone "example.ru" {
type master;
file "example.ru.zone";
allow-query { any; };
allow-transfer { none; };
};
Эти параметры определяют:
•
•
•
•
2.
Этот сервер является основным сервером (type master) для example.ru зоны.
Файл /var/named/example.ru.zone - это файл зоны. Если задан относительный
путь, как в этом примере, этот путь относится к каталогу, в котором указана
directory в options инструкции.
Любой хост может запросить эту зону. В качестве альтернативы можно
указать диапазоны IP-адресов или BIND псевдонимы списка управления
доступом (ACL), чтобы ограничить доступ.
Ни один хост не может перенести зону. Разрешайте передачу зон только при
настройке дополнительных серверов и только для IP-адресов дополнительных
серверов.
Проверьте синтаксис /etc/named.conf файла:
## named-checkconf
Если команда не выводит никаких выходных данных, значит, синтаксис правильный.
3.
Создайте /var/named/example.ru .zone файл, например, со следующим
содержимым:
$TTL 8h
@ IN SOA ns1.example.ru. hostmaster.example.ru. (
2022070601 ; serial number
1d
; refresh period
3h
; retry period
3d
; expire time
3h ) ; minimum TTL
IN NS ns1.example.ru.
IN MX 10 mail.example.ru.
www
IN A 192.0.2.30
202
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
www
ns1
ns1
mail
mail
IN AAAA 2001:db8:1::30
IN A 192.0.2.1
IN AAAA 2001:db8:1::1
IN A 192.0.2.20
IN AAAA 2001:db8:1::20
Файл зоны:
•
•
•
•
•
1.
Устанавливает значение промежутка времени по умолчанию (TTL) для записей
ресурсов равным 8 часам. Без суффикса времени, такого как h для обозначения
часа, BIND интерпретирует значение как секунды.
Содержит требуемую запись ресурса SOA с подробной информацией о зоне.
Наборы ns1.example.ru в качестве авторитетного DNS-сервера для этой зоны.
Чтобы зона функционировала, требуется по крайней мере одна запись сервера
имен (NS). Однако, чтобы быть совместимым с RFC 1912, требуется по крайней
мере два сервера имен.
Наборы mail.example.ru, как почтовый шлюз (MX) из example.ru домен. Числовое
значение перед именем хоста является приоритетом записи. Записи с меньшим
значением имеют более высокий приоритет.
Задает IPv4 и IPv6-адреса www.example.ru, mail.example.ru и ns1.example.ru.
Установите безопасные разрешения для файла зоны, которые позволяют
читать его только группе named:
## chown root:named /var/named/example.ru.zone
## chmod 640 /var/named/example.ru.zone
2.
Проверьте синтаксис /var/named/example.ru.zone файла:
3.
Перезагрузите BIND:
## systemctl reload named
Если запускается BIND в среде с измененным root, используйте эту systemctl reload
named-chroot команду для перезагрузки службы.
Проверка:
•
Запрашивайте разные записи из example.ru зоны и убедитесь, что выходные
данные соответствуют записям, которые настроены в файле зоны:
## dig +short @localhost AAAA www.example.ru
2001:db8:1::30
203
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## dig +short @localhost NS example.ru
ns1.example.ru.
## dig +short @localhost A ns1.example.ru
192.0.2.1
В этом примере предполагается, что BIND выполняется на том же хосте и отвечает
на запросы в localhost интерфейсе.
Настройка обратной зоны на основном сервере BIND
Обратные зоны сопоставляют IP-адреса с именами. Например, если отвечаете за
диапазон IP192.0.2.0/24-адресов, можно настроить обратную зону в BIND для
преобразования IP-адресов из этого диапазона в имена хостов.
Примечание: Если создается обратная DNS-зона для целых сетей (обратная DNSзона — это специальная доменная зона. Она предназначена для определения имени
хоста по его IP-адресу с помощью PTR-записи), состоящая из классов, назовите зону
соответствующим образом. Например, для сети класса C 192.0.2.0/24 имя зоны равно
2.0.192.in-addr.arpa. Если можно создать обратную DNS-зону для другого размера
сети 190.0.2.0/28 - имя зоны будет следующим 28-2.0.192.in-addr.arpa.
Предварительные условия:
•
•
BIND уже настроена, например, как сервер имен кеширования.
Служба namedor named-chroot запущена.
Процедура:
1.
Добавьте определение зоны в /etc/named.conf файл:
zone "2.0.192.in-addr.arpa" {
type master;
file "2.0.192.in-addr.arpa.zone";
allow-query { any; };
allow-transfer { none; };
};
Эти параметры определяют:
•
•
Этот сервер в качестве основного сервера (типа master) для 2.0.192.inaddr.arpa обратной зоны.
Файл /var/named/2.0.192.in-addr.arpa.zone является файлом зоны. Если задается
относительный путь, как в этом примере, этот путь относится к каталогу,
который задан в разделе directory в инструкции options.
204
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
2.
Любой хост может запросить эту зону. В качестве альтернативы, укажите
диапазоны IP-адресов или BIND псевдонимы списка управления доступом (ACL),
чтобы ограничить доступ.
Ни один хост не может перенести зону. Разрешайте передачу зон только при
настройке вторичных серверов и только для IP-адресов вторичных серверов.
Проверьте синтаксис файла /etc/named.conf:
## named-checkconf
Если команда не выводит никаких выходных данных, значит, синтаксис правильный.
3.
Создайте /var/named/2.0.192.in-addr.arpa .zone файл, например, со следующим
содержимым:
$TTL 8h
@ IN SOA ns1.example.ru. hostmaster.example.ru. (
2022070601 ; serial number
1d
; refresh period
3h
; retry period
3d
; expire time
3h ) ; minimum TTL
IN NS ns1.example.ru.
1
30
IN PTR ns1.example.ru.
IN PTR www.example.ru.
Этот файл зоны:
•
•
•
•
4.
Устанавливает значение времени жизни по умолчанию (TTL) для записей
ресурсов равным 8 часам. Без суффикса времени, такого как h для обозначения
часа, BIND интерпретирует значение как секунды.
Содержит требуемую запись ресурса SOA с подробной информацией о зоне.
Содержит наборы ns1.example.ru в качестве авторитетного DNS-сервера для
этой обратной зоны. Чтобы зона функционировала, требуется минимум одна
запись сервера имен (NS). Однако, чтобы быть совместимым с RFC 1912,
требуется минимум два сервера имен.
Устанавливает запись указателя (PTR) для 192.0.2.1 и 192.0.2.30 адресов.
Установите безопасные разрешения для файла зоны, которые позволяют
читать его только названной группе:
205
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## chown root:named /var/named/2.0.192.in-addr.arpa.zone
## chmod 640 /var/named/2.0.192.in-addr.arpa.zone
5.
Проверьте синтаксис /var/named/2.0.192.in-addr.arpa.zone файла:
## named-checkzone 2.0.192.in-addr.arpa /var/named/2.0.192.in-addr.arpa.zone
zone 2.0.192.in-addr.arpa/IN: loaded serial 2022070601
OK
6.
Перезагрузите BIND:
## systemctl reload named
Если запускается BIND в среде с измененным root, используйте systemctl reload namedchroot команду для перезагрузки службы.
Проверка:
Запросите разные записи из обратной зоны и убедитесь, что выходные данные
соответствуют записям, настроенным в файле зоны:
## dig +short @localhost -x 192.0.2.1
ns1.example.ru.
## dig +short @localhost -x 192.0.2.30
www.example.ru.
В этом примере предполагается, что BIND выполняется на том же хосте и отвечает
на запросы в localhost интерфейсе.
Обновление файла зоны BIND
В определенных ситуациях, например, при изменении IP-адреса сервера, необходимо
обновить файл зоны. Если за зону отвечают несколько DNS-серверов, выполните эту
процедуру только на основном сервере. Другие DNS-серверы, на которых хранится
копия зоны, получат обновление посредством передачи зоны.
Предварительные условия:
•
•
Зона настроена.
Служба namedor named-chroot запущена.
Процедура:
206
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
При необходимости укажите путь к файлу зоны в /etc/named.conf файле:
options {
...
directory
}
"/var/named";
zone "example.ru" {
...
file "example.ru.zone";
};
Найдите путь к файлу зоны в file инструкции в определении зоны. Относительный
путь относится к каталогу directory, указанному в options инструкции.
2.
•
•
Отредактируйте файл зоны:
Внесите необходимые изменения.
Увеличьте серийный номер в записи начала полномочий (SOA).
Примечание: Если серийный номер равен или меньше предыдущего значения,
вторичные серверы не будут обновлять свою копию зоны.
3.
Проверьте синтаксис файла зоны:
## named-checkzone example.ru /var/named/example.ru.zone
zone example.ru/IN: loaded serial 2022062802
OK
4.
Перезагрузите BIND:
## systemctl reload named
Если запускается BIND в среде с измененным root, используйте systemctl reload namedchroot команду для перезагрузки службы.
Проверка:
Запросите запись, которую добавили, изменили или удалили, например:
## dig +short @localhost A ns2.example.ru
192.0.2.2
В этом примере предполагается, что BIND выполняется на том же хосте и отвечает
на запросы в localhost интерфейсе.
207
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Подписание зоны DNSSEC с использованием функций автоматической генерации
ключей и обслуживания зоны
Можно подписывать зоны с помощью расширений безопасности системы доменных
имен (DNSSEC) для обеспечения аутентификации и целостности данных. Такие зоны
содержат дополнительные записи ресурсов. Клиенты могут использовать их для
проверки подлинности информации о зоне.
Если включена функция политики DNSSEC для зоны, BIND автоматически выполняет
следующие действия:
•
•
•
Создает ключи.
Подписывает зону.
Поддерживает зону, включая повторную подпись и периодическую замену
ключей.
Примечание: Чтобы разрешить внешним DNS-серверам проверять подлинность зоны,
необходимо добавить открытый ключ зоны в «родительскую зону» (текущий каталог.
Каждая выполняемая программа «работает» в строго определённом каталоге
файловой системы. Такой каталог называется текущим каталогом, можно
представлять, что программа во время работы «находится» именно в этом
каталоге, это её «рабочее место»). Обратитесь к своему поставщику домена или в
реестр для получения более подробной информации о том, как это сделать.
Эта процедура использует встроенную политику DNSSEC по умолчанию в BIND. Эта
политика использует единственные подписи ключей ECDSAP256SHA. В качестве
альтернативы создайте свою собственную политику для использования
пользовательских ключей, алгоритмов и таймингов.
Предварительные условия:
•
•
•
•
Установлена BIND 9.16 или более поздней версии. Чтобы выполнить это
требование, установите пакет bind9.16 вместо bind.
Зона, для которой можно включить DNSSEC, настроена.
Запущена служба named или named-chroot.
Сервер синхронизирует время с сервером времени. Точное системное время
важно для проверки DNSSEC.
Процедура:
1.
Отредактируйте файл /etc/named.conf и добавьте dnssec-policy default; в зону,
для которой можно включить DNSSEC:
zone "example.ru" {
...
208
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
dnssec-policy default;
};
2.
Перезагрузите BIND:
## systemctl reload named
Если запускается BIND в среде с измененным root, используйте systemctl reload namedchroot команду для перезагрузки службы.
3.
•
BIND хранит открытый ключ в /var/named/K.+< algorithm>+.key файле.
Используйте этот файл для отображения открытого ключа зоны в формате,
который требуется «родительской зоне»:
Формат записи DS:
## dnssec-dsfromkey /var/named/Kexample.ru.+013+61141.key
example.ru. IN DS 61141 13 2
3E184188CF6D2521EDFDC3F07CFEE8D0195AACBD85E68BAE0620F638B4B1B027
•
Формат DNSKEY:
## grep DNSKEY /var/named/Kexample.ru.+013+61141.key
example.ru. 3600 IN DNSKEY 257 3 13
sjzT3jNEp120aSO4mPEHHSkReHUf7AABNnT8hNRTzD5cKMQSjDJin2I3
5CaKVcWO1pm+HltxUEt+X9dfp8OZkg==
4.
Запросите добавить открытый ключ зоны в «родительскую зону». Обратитесь
к поставщику домена или в реестр для получения дополнительной информации
о том, как это сделать.
Проверка:
1.
Запросите у собственного DNS-сервера запись из зоны, для которой включена
подпись DNSSEC:
## dig +dnssec +short @localhost A www.example.ru
192.0.2.30
А 13 3 28800 20220718081258 20220705120353 61141 example.ru .
e7Cfh6GuOBMAWsgsHSVTPh+JJSOI/Y6zctzIuqIU1JqEgOOAfL/Qz474
M0sgi54m1Kmnr2ANBKJN9uvOs5eXYw==
В этом примере предполагается, что BIND выполняется на том же хосте и отвечает
на запросы в localhost интерфейсе.
209
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
2.
После добавления открытого ключа в «родительскую зону» и распространения
его на другие серверы убедитесь, что сервер устанавливает флаг authenticated
data (ad) для запросов к подписанной зоне:
## dig @localhost example.ru +dnssec
...
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
...
Настройка передачи зон между DNS-серверами BIND
Передача зон гарантирует, что все DNS-серверы, на которых есть копия зоны,
используют актуальные данные.
Предварительные условия:
•
•
•
На будущем основном сервере зона, для которой необходимо настроить
передачу зон, уже настроена.
На будущем вторичном сервере BIND уже настроена, например, как сервер имен
кеширования.
На обоих серверах запущена служба named или named-chroot.
Процедура:
1.
•
На существующем основном сервере:
Создайте общий ключ и добавьте его в файл /etc/named.conf:
## tsig-keygen example-transfer-key | tee -a /etc/named.conf
key "example-transfer-key" {
algorithm hmac-sha256;
secret "q7ANbnyliDMuvWgnKOxMLi313JGcTZB5ydMW5CyUGXQ=";
};
Эта команда отображает выходные tsig-keygen данные команды и автоматически
добавляет их к /etc/named.conf.
Вывод команды потребуется позже и на вторичном сервере.
•
Отредактируйте определение зоны в /etc/named.conf файле. В allow-transfer
инструкции определите, что серверы должны предоставлять ключ, указанный в
example-transfer-key инструкции, для передачи зоны:
zone "example.ru" {
...
210
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
allow-transfer { key example-transfer-key; };
};
При необходимости используйте псевдонимы списка управления доступом (ACL) в
allow-transfer инструкции.
•
По умолчанию после обновления зоны BIND уведомляет все серверы имен, у
которых есть запись сервера имен (NS) в этой зоне. Если не планируете
добавлять NS запись для дополнительного сервера в зону, можно настроить,
чтобы BIND уведомляла этот сервер в любом случае. Для этого добавьте в
also-notify зону инструкцию с IP-адресами этого вторичного сервера:
zone "example.ru" {
...
also-notify { 192.0.2.2; 2001:db8:1::2; };
};
•
Проверьте синтаксис /etc/named.conf файла:
## named-checkconf
Если команда не выводит никаких выходных данных, значит, синтаксис правильный.
•
Перезагрузите BIND:
## systemctl reload named
Если запущена BIND в среде с измененным корневым каталогом, используйте команду
systemctl reload named-chroot для перезагрузки службы.
2.
•
На будущем вторичном сервере:
Отредактируйте /etc/named.conf файл следующим образом:
– Добавьте то же определение ключа, что и на основном сервере.
key "example-transfer-key" {
algorithm hmac-sha256;
secret "q7ANbnyliDMuvWgnKOxMLi313JGcTZB5ydMW5CyUGXQ=";
};
•
Добавьте определение зоны в /etc/named.conf файл.
zone "example.ru" {
type slave;
211
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
file "slaves/example.ru.zone";
allow-query { any; };
allow-transfer { none; };
masters {
192.0.2.1 key example-transfer-key;
2001:db8:1::1 key example-transfer-key;
};
};
Эти настройки указывают:
•
Этот сервер является вторичным сервером (типа slave) для example.ru зоны:
–
•
Файл /var/named/slaves/example.ru .zone является файлом зоны. Если
задается относительный путь, как в этом примере, этот путь
относится к каталогу, который задан в разделе directory в инструкции
options. Чтобы отделить файлы зоны, для которых этот сервер является
вторичным, от первичных, мсохранить их, например, в каталоге
/var/named/slaves/.
– Любой хост может запросить эту зону. В качестве альтернативы,
укажите диапазоны IP-адресов или псевдонимы ACL, чтобы ограничить
доступ.
– Ни один хост не может перенести зону с этого сервера.
– IP-адреса основного сервера этой зоны - 192.0.2.1 и 2001:db8:1::2. В
качестве альтернативы можно указать псевдонимы ACL. Этот
вторичный сервер будет использовать ключ с именем example-transfer-key
для аутентификации на первичном сервере.
Проверьте синтаксис файла /etc/named.conf:
## named-checkconf
•
Перезагрузите BIND:
## systemctl reload named
Если запускаете BIND в среде с измененным root, используйте эту systemctl reload
named-chroot команду для перезагрузки службы.
3.
При необходимости измените файл зоны на основном сервере и добавьте NS
запись для нового дополнительного сервера.
Проверка:
На вторичном сервере:
212
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Отображение записей systemd журнала named службы:
## journalctl -u named...
Jul 06 15:08:51 ns2.example.ru named[2024]: zone example.ru/IN: Transfer started.
Jul 06 15:08:51 ns2.example.ru named[2024]: transfer of 'example.ru/IN' from 192.0.2.1#53:
connected using 192.0.2.2#45803
Jul 06 15:08:51 ns2.example.ru named[2024]: zone example.ru/IN: transferred serial 2022070101Jul 06
15:08:51 ns2.example.ru named[2024]: transfer of 'example.ru/IN' from 192.0.2.1#53: Transfer
status: success
Jul 06 15:08:51 ns2.example.ru named[2024]: transfer of 'example.ru/IN' from 192.0.2.1#53: Transfer
completed: 1 messages, 29 records, 2002 bytes, 0.003 secs (667333 bytes/sec)
Если запускаете BIND в среде с изменяемым root, используйте эту journalctl -u namedchroot команду для отображения записей журнала.
2.
Убедитесь, что BIND создал файл зоны:
## ls -l /var/named/slaves/
total 4
-rw-r--r--. 1 named named 2736 Jul 6 15:08 example.ru.zone
Обратите внимание, что по умолчанию вторичные серверы хранят файлы зон в
двоичном формате raw.
3.
Запросите запись о перенесенной зоне с сервера-получателя:
## dig +short @192.0.2.2 AAAA www.example.ru
2001:db8:1::30
В приведенном выше примере предполагается, что вторичный сервер, который
настроен в этой процедуре, прослушивает IP - адрес 192.0.2.2.
Настройка зон политики ответа в BIND для переопределения записей DNS
Используя блокировку и фильтрацию DNS, администраторы могут переписать DNSответ, чтобы заблокировать доступ к определенным доменам или хостам. В BIND
зоны политики реагирования (RPZS) предоставляют эту функцию. Можно настроить
различные действия для заблокированных записей, такие как возврат ошибки
NXDOMAIN или отсутствие ответа на запрос.
Если в среде имеется несколько DNS-серверов, используйте эту процедуру для
настройки RPZ на основном сервере, а затем настройте передачу зон, чтобы
сделать RPZ доступной на вторичных серверах.
213
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Предварительные условия:
•
•
BIND уже настроен, например, как кеширующий сервер имен.
Запущена служба named или named-chroot.
Процедура:
1.
•
Отредактируйте файл /etc/named.conf и внесите следующие изменения:
Добавьте определение политики ответа в options инструкцию:
options {
...
response-policy {
zone "rpz.local";
};
...
}
Можно задать пользовательское имя для RPZ в zone инструкции in response-policy.
Однако на следующем шаге необходимо использовать то же имя в определении зоны.
•
Добавьте zone определение для RPZ, которое задано на предыдущем шаге:
zone "rpz.local" {
type master;
file "rpz.local";
allow-query { localhost; 192.0.2.0/24; 2001:db8:1::/64; };
allow-transfer { none; };
};
Эти настройки указывают:
•
•
•
•
2.
Этот сервер является основным сервером (тип master) для RPZ с именем
rpz.local.
Файл /var/named/rpz.local является файлом зоны. Если задан относительный
путь, как в этом примере, этот путь относится к каталогу, который задан в
разделе directory в инструкции options.
Любые хосты, определенные в allow-query, могут запрашивать этот RPZ. В
качестве альтернативы, укажите диапазоны IP-адресов или BIND псевдонимы
списка управления доступом (ACL), чтобы ограничить доступ.
Ни один хост не может перенести зону. Разрешайте передачу зон только при
настройке вторичных серверов и только для IP-адресов вторичных серверов.
Проверьте синтаксис /etc/named.conf файла:
214
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## named-checkconf
Если команда не выводит никаких выходных данных, значит, синтаксис правильный.
3.
Создайте /var/named/rpz.local файл, например, со следующим содержимым:
$TTL 10m
@ IN SOA ns1.example.ru. hostmaster.example.ru. (
2022070601 ; serial number
1h
; refresh period
1m
; retry period
3d
; expire time
1m ) ; minimum TTL
IN NS ns1.example.ru.
example.org
*.example.org
example.net
*.example.net
IN CNAME .
IN CNAME .
IN CNAME rpz-drop.
IN CNAME rpz-drop.
Этот файл зоны:
•
•
•
•
•
4.
Устанавливает значение времени действия по умолчанию (TTL) для записей
ресурсов равным 10 минутам. Без суффикса времени, такого как h для
обозначения часа, BIND интерпретирует значение как секунды.
Содержит требуемую запись ресурса start of authority (SOA) с подробной
информацией о зоне.
Содержит наборы ns1.example.ru в качестве авторитетного DNS-сервера для
этой зоны. Чтобы зона функционировала, требуется одна запись сервера имен
(NS). Однако, чтобы быть совместимым с RFC 1912, требуется две записи
сервера имен.
Возвращает ошибку NXDOMAIN для запросов к example.org и хосты в этом
домене.
Отбрасывает запросы в example.net и хосты в этом домене.
Проверьте синтаксис файла /var/named/rpz.local:
## named-checkzone rpz.local /var/named/rpz.local
zone rpz.local/IN: loaded serial 2022070601
OK
215
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
5.
Перезагрузите BIND:
## systemctl reload named
Eсли запущен BIND в среде с измененным root, используйте команду systemctl reload
named-chroot для перезагрузки службы.
Проверка:
1.
Разрешите узел в example.org, который настроен в RPZ для возврата ошибки
NXDOMAIN:
## dig @localhost www.example.org
...
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 30286
...
В приведенном выше примере предполагается, что BIND выполняется на том же
хосте и отвечает на запросы в интерфейсе localhost.
Попытка разрешить узел в example.net домен, который настроен в RPZ для
отбрасывания запросов, приведена ниже:
## dig @localhost www.example.net
...
;; connection timed out; no servers could be reached
...
Настройка несвязанного DNS-сервера
DNS-сервер unbound - это проверяющий, рекурсивный и кеширующий преобразователь
DNS. Кроме того, основное внимание unbound уделяется безопасности и по
умолчанию включает расширения безопасности доменных имен (DNSSEC).
Настройка Unbound в качестве кеширующего DNS-сервера
По умолчанию служба DNS unbound разрешает и кеширует успешные и неудачные
запросы. Затем служба отвечает на запросы к тем же записям из своего кеша.
Процедура:
1.
Установите unbound пакет:
## yum install unbound
216
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
2.
•
Отредактируйте /etc/unbound/unbound.conf файл и внесите следующие
изменения в server предложение:
Добавьте interface параметры, на каких IP-адресах служба unbound
прослушивает запросы, например:
interface: 127.0.0.
interface: 192.0.2.1
interface: 2001:db8:1::1
С этими настройками unbound прослушивает только указанные адреса IPv4 и IPv6.
Ограничение интерфейсов не позволяет клиентам из неавторизованных сетей, таких
как Интернет, отправлять запросы на этот DNS-сервер.
•
Добавьте access-control параметры для настройки, из каких подсетей клиенты
могут запрашивать службу DNS, например:
access-control: 127.0.0.0/8 allow
access-control: 192.0.2.0/24 allow
access-control: 2001:db8:1::/64 allow
3.
Создайте закрытые ключи и сертификаты для удаленного управления unbound
сервисом:
## systemctl restart unbound-keygen
Если пропустили этот шаг, проверка конфигурации на следующем шаге приведет к
обнаружению отсутствующих файлов. Однако unbound служба автоматически
создает файлы, если они отсутствуют.
4.
Проверьте файл конфигурации:
## unbound-checkconf
unbound-checkconf: no errors in /etc/unbound/unbound.conf
5.
Обновите правила межсетевого экрана, чтобы разрешить входящий DNSтрафик:
## firewall-cmd --permanent --add-service=dns
## firewall-cmd --reload
6.
Включите и запустите unbound службу:
217
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## systemctl enable --now unbound
Проверка:
1.
Запросите unbound DNS-сервер, прослушивающий **localhost* интерфейс,
чтобы разрешить домен:
## dig @localhost www.example.ru
...
www.example.ru. 86400 IN A 198.51.100.34
;; Query time: 330 msec
...
После первого запроса записи unbound добавляет запись в свой кеш.
2.
Повторите предыдущий запрос:
## dig @localhost www.example.ru
...
www.example.ru. 85332 IN A 198.51.100.34
;; Query time: 1 msec
...
Из-за кешированной записи дальнейшие запросы к той же записи выполняются
значительно быстрее, пока срок действия записи не истечет.
Следующие шаги:
Настройте клиентов в сети на использование этого DNS-сервера. Например,
используйте nmcli утилиту для установки IP-адреса DNS-сервера в NetworkManager
профиле подключения:
## nmcli connection modify Example_Connection ipv4.dns 192.0.2.1
## nmcli connection modify Example_Connection ipv6.dns 2001:db8:1::1
Предоставление DHCP-сервисов
Протокол динамической настройки хоста (DHCP) - это сетевой протокол, который
автоматически присваивает IP-информацию клиентам.
218
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
В этом разделе объясняется общая информация о службе dhcpd, а также о том, как
настроить DHCP-сервер и DHCP-ретранслятор.
Если процедура требует различных шагов для предоставления DHCP в сетях IPv4 и
IPv6, разделы этой главы содержат процедуры для обоих протоколов.
Разница между статической и динамической IP-адресацией
Статическая IP-адресация
Когда устройству назначен статический IP-адрес, адрес не меняется с течением
времени, если не изменить его вручную. Используйте статическую IP-адресацию, если
необходимо:
•
•
обеспечить согласованность сетевых адресов для таких серверов, как DNS и
серверов аутентификации;
использовать устройства внеполосного управления, которые работают
независимо от другой сетевой инфраструктуры.
Динамическая IP-адресация
Когда устройство настраивается на использование динамического IP-адреса, адрес
может меняться с течением времени. По этой причине динамические адреса обычно
используются для устройств, которые время от времени подключаются к сети,
поскольку IP-адрес может отличаться после перезагрузки хоста.
Динамические IP-адреса более гибкие, их проще настраивать и администрировать.
Протокол динамического управления хостом (DHCP) - это традиционный метод
динамического назначения сетевых конфигураций хостам.
Примечание: Не существует строгого правила, определяющего, когда использовать
статические или динамические IP-адреса. Это зависит от потребностей
пользователя, предпочтений и сетевой среды.
Фазы транзакции DHCP
DHCP работает в четыре этапа: обнаружение, предложение, запрос, подтверждение,
также называемый процессом DORA. DHCP использует этот процесс для
предоставления IP-адресов клиентам.
Обнаружение
DHCP-клиент отправляет сообщение для обнаружения DHCP-сервера в сети. Это
сообщение транслируется на сетевом уровне и уровне канала передачи данных.
Предложение
219
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
DHCP-сервер получает сообщения от клиента и предлагает IP-адрес DHCP-клиенту.
Это сообщение является одноадресным на уровне канала передачи данных, но
широковещательным на сетевом уровне.
Запрос
DHCP-клиент запрашивает у DHCP-сервера предлагаемый IP-адрес. Это сообщение
является одноадресным на уровне канала передачи данных, но широковещательным
на сетевом уровне.
Подтверждение
DHCP-сервер отправляет подтверждение DHCP-клиенту. Это сообщение является
одноадресным на уровне канала передачи данных, но широковещательным на сетевом
уровне. Это заключительное сообщение процесса DHCP DORA.
Различия при использовании dhcpd для DHCPv4 и DHCPv6
Служба dhcpd поддерживает предоставление как DHCPv4, так и DHCPv6 на одном
сервере. Однако нужен отдельный экземпляр dhcpd с отдельными файлами
конфигурации, чтобы обеспечить DHCP для каждого протокола.
DHCPv4
•
•
Файл конфигурации: /etc/dhcp/dhcpd.conf
Имя службы Systemd: **dhcpd*
DHCPv6
•
•
Файл конфигурации: /etc/dhcp/dhcpd6.conf
Имя службы Systemd: **dhcpd6*
База данных аренды сетевого адреса службой dhcpd
Аренда DHCP - это период времени, на который служба dhcpd выделяет сетевой
адрес клиенту. Служба dhcpd хранит договоры аренды DHCP (list leases) в следующих
базах данных:
•
•
Для DHCPv4: /var/lib/dhcpd/dhcpd.leases
Для DHCPv6: /var/lib/dhcpd/dhcpd6.leases
Предупреждение: Ручное обновление файлов базы данных может привести к
повреждению баз данных.
Базы данных аренды содержат информацию о выделенных договорах аренды, такую
как IP-адрес, присвоенный адресу управления доступом к мультимедиа (MAC), или
отметка времени истечения срока аренды. Обратите внимание, что все временные
метки в базах данных аренды указаны по Всемирному координированному времени
(UTC).
220
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Служба dhcpd периодически воссоздает базы данных:
1.
•
•
2.
Служба переименовывает существующие файлы:
/var/lib/dhcpd/dhcpd.leases в /var/lib/dhcpd/dhcpd.leases~
/var/lib/dhcpd/dhcpd6.leases в /var/lib/dhcpd/dhcpd6.leases~
Служба записывает все известные договоры аренды во вновь созданные файлы:
/var/lib/dhcpd/dhcpd.leases и /var/lib/dhcpd/dhcpd6.leases.
Сравнение DHCPv6 с radvd
В сети IPv6 только рекламные сообщения маршрутизатора предоставляют
информацию о шлюзе IPv6 по умолчанию. Как следствие, если можно использовать
DHCPv6 в подсетях, для которых требуется настройка шлюза по умолчанию,
необходимо дополнительно настроить службу рекламы маршрутизатора, такую как
демон рекламы маршрутизатора (radvd).
Служба radvd использует флаги в рекламных пакетах маршрутизатора, чтобы
объявить о доступности сервера DHCPv6.
В этом разделе сравниваются DHCPv6 и radvd и предоставляется информация о
настройке radvd (см. таблицу ниже).
Параметр
DHCPv6
radvd
Предоставляет информацию о шлюзе по умолчанию
НЕТ
ДА
Гарантирует случайные адреса для защиты конфиденциальности
ДА
НЕТ
Отправляет дополнительные параметры конфигурации сети
ДА
НЕТ
Сопоставляет адреса управления доступом к мультимедиа (MAC)
с адресами IPv6
ДА
НЕТ
Настройка службы radvd для маршрутизаторов IPv6
Демон рекламы маршрутизатора (radvd) отправляет рекламные сообщения
маршрутизатора, которые требуются для автоматической настройки IPv6 без
состояния. Это позволяет пользователям автоматически настраивать свои адреса,
параметры, маршруты и выбирать маршрутизатор по умолчанию на основе этих
рекламных объявлений.
Процедура, описанная в этом разделе, объясняет как выполнить настройку radvd.
Примечание: Можно устанавливать только /64 префиксы в radvd сервисе. Чтобы
использовать другие префиксы, используйте DHCPv6.
Предварительные условия
Права root пользователя.
221
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Процедура
1.
Установите radvd упаковку:
## yum install radvd
2.
Отредактируйте /etc/radvd.conf файл и добавьте следующую конфигурацию:
interface enp1s0
{
AdvSendAdvert on;
AdvManagedFlag on;
AdvOtherConfigFlag on;
prefix 2001:db8:0:1::/64 {
};
};
Эти параметры настраивают radvd на отправку сообщений маршрутизатора на
устройство enp1s0 для подсети 2001:db8:0:1::/64. Параметр AdvManagedFlagon
определяет, что клиент должен получать IP-адрес от DHCP-сервера, а параметр
AdvOtherConfigFlag, установленный в значение on, определяет, что клиенты должны
получать неадресную информацию от DHCP-сервера.
3.
При необходимости настройте, чтобы radvd автоматически запускался при
загрузке системы:
## systemctl enable radvd
4.
Запустите radvd службу:
## systemctl start radvd
5.
При необходимости отобразите содержимое рекламных пакетов
маршрутизатора и отправьте настроенные значения radvd:
## radvdump
Настройка сетевых интерфейсов для DHCP-серверов
По умолчанию служба dhcp обрабатывает запросы только на сетевых интерфейсах,
которые имеют IP-адрес в подсети, определенной в файле конфигурации службы.
222
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Например, в следующем сценарии dhcpd прослушивает только сетевой enp0s1
интерфейс:
•
•
•
существует определение подсети для сети 192.0.2.0/24 в файле
/etc/dhcp/dhcpd.conf.
сетевой интерфейс enp0s1 подключен к подсети 192.0.2.0/24.
интерфейс enp7s0 подключен к другой подсети.
Следуйте процедуре, описанной в этом разделе, только в том случае, если DHCPсервер содержит несколько сетевых интерфейсов, подключенных к одной сети, и
служба должна прослушивать только определенные интерфейсы.
В зависимости от того, нужно ли предоставить DHCP для IPv4, IPv6 или обоих
протоколов, см. процедуру для:
•
•
Сети IPv4
Сети IPv6
Предварительные условия:
•
•
Права пользователя root.
Пакет dhcp-сервера установлен.
Процедура:
•
1.
Для сетей IPv4:
Скопируйте /usr/lib/systemd/system/dhcpd.service файл в каталог
/etc/systemd/system/:
## cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/
Не редактируйте файл /usr/lib/systemd/system/dhcpd.service. Будущие обновления
пакета dhcp-сервера могут переопределить изменения.
2.
Отредактируйте файл /etc/systemd/system/dhcpd.service и добавьте имена
интерфейса, который dhcpd должен прослушивать для команды в ExecStart
параметре:
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid
$DHCPDARGS enp0s1enp7s0
В этом примере настраивается возможность dhcpd прослушивать только enp0s1 и
enp7s0.
3.
Перезагрузите конфигурацию системного менеджера:
223
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## systemctl daemon-reload
4.
Перезапустите службу dhcpd:
## systemctl restart dhcpd.service
•
1.
Для сетей IPv6:
Скопируйте файл /usr/lib/systemd/system/dhcpd6.service в каталог
/etc/systemd/system/:
## cp /usr/lib/systemd/system/dhcpd6.service /etc/systemd/system/
Не редактируйте файл /usr/lib/systemd/system/dhcpv6.service. Будущие обновления
пакета dhcp-сервера могут переопределить изменения.
2.
Отредактируйте файл /etc/systemd/system/dhcpd6.service и добавьте имена
интерфейса, который dhcpd должен прослушивать для команды в параметре
ExecStart:
ExecStart=/usr/sbin/dhcpd -f -6 -cf /etc/dhcp/dhcpd6.conf -user dhcpd -group dhcpd --no-pid
$DHCPDARGS enp0s1enp7s0
В этом примере настраивается, что dhcpd прослушивает только enp0s1 и enp7s0.
3.
Перезагрузите конфигурацию системного менеджера:
## systemctl daemon-reload
4.
Перезапустите dhcpd6 службу:
## systemctl restart dhcpd6.service
Настройка службы DHCP для подсетей, напрямую подключенных к серверу DHCP
Используйте следующую процедуру, если DHCP-сервер напрямую подключен к
подсети, для которой сервер должен отвечать на запросы DHCP. Это происходит в
том случае, если сетевому интерфейсу сервера присвоен IP-адрес этой подсети.
В зависимости от того, нужно ли предоставить DHCP для IPv4, IPv6 или обоих
протоколов, см. процедуру для:
•
Сети IPv4
224
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
Сети IPv6
Предварительные условия:
•
•
Права пользователя root.
Пакет dhcp-сервера установлен.
Процедура:
•
1.
•
Для сетей IPv4:
Отредактируйте файл /etc/dhcp/dhcpd.conf:
При необходимости добавьте глобальные параметры, которые dhcpd
использует по умолчанию, если никакие другие директивы не содержат этих
параметров:
option domain-name "example.ru";
default-lease-time 86400;
В этом примере задается доменное имя по умолчанию для подключения к example.ru, а
время аренды по умолчанию равно 86400 секундам (1 день).
•
Добавьте авторитетное утверждение в новую строку:
authoritative;
Примечание: Без утверждения authority служба dhcpd не отвечает на сообщения
DHCPREQUEST с помощью DHCPNAK, если клиент запрашивает адрес, который
находится за пределами пула.
•
Для каждой подсети IPv4, непосредственно подключенной к интерфейсу
сервера, добавьте объявление подсети:
subnet 192.0.2.0 netmask 255.255.255.0 {
range 192.0.2.20 192.0.2.100;
option domain-name-servers 192.0.2.1;
option routers 192.0.2.1;
option broadcast-address 192.0.2.255;
max-lease-time 172800;
}
В этом примере добавляется объявление подсети для сети 192.0.2.0/24. При такой
конфигурации DHCP-сервер назначает следующие параметры клиенту, который
отправляет DHCP-запрос из этой подсети:
225
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
•
•
•
2.
свободный IPv4-адрес из диапазона, определенного в параметре range;
IP DNS-сервера для этой подсети: 192.0.2.1;
шлюз по умолчанию для этой подсети: 192.0.2.1;
широковещательный адрес для этой подсети: 192.0.2.255;
максимальное время аренды IP-адреса, по истечении которого клиенты в этой
подсети освобождают IP и отправляют новый запрос на сервер: 172800 секунд
(2 дня).
При необходимости настройте, чтобы dhcpd запускался автоматически при
загрузке системы:
## systemctl enable dhcpd
3.
Запустите dhcpd службу:
## systemctl start dhcpd
•
1.
•
Для сетей IPv6:
Отредактируйте /etc/dhcp/dhcpd6.conf файл:
При необходимости добавьте глобальные параметры, которые dhcpd
использует по умолчанию, если никакие другие директивы не содержат этих
параметров:
option dhcp6.domain-search "example.ru";
default-lease-time 86400;
В этом примере задается доменное имя по умолчанию для подключения к example.ru, а
время аренды по умолчанию равно 86400 секундам (1 день).
•
Добавьте авторитетное утверждение в новую строку:
authoritative;
Примечание: Без утверждения authority служба dhcpd не отвечает на сообщения
DHCPREQUEST с помощью DHCPNAK, если клиент запрашивает адрес, который
находится за пределами пула.
•
Для каждой подсети IPv6, непосредственно подключенной к интерфейсу
сервера, добавьте объявление подсети:
subnet6 2001:db8:0:1::/64 {
range6 2001:db8:0:1::20 2001:db8:0:1::100;
226
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
option dhcp6.name-servers 2001:db8:0:1::1;
max-lease-time 172800;
}
В этом примере добавляется объявление подсети для сети 2001:db8:0:1::/64. При
такой конфигурации DHCP-сервер назначает следующие параметры клиенту,
который отправляет DHCP-запрос из этой подсети:
•
•
•
Свободный IPv6-адрес из диапазона, определенного в параметре range 6.
IP DNS-сервера для этой подсети - 2001:db8:0:1::1.
Максимальное время аренды IP-адреса, по истечении которого клиенты в этой
подсети освобождают IP и отправляют новый запрос на сервер, составляет
172800 секунд (2 дня).
Обратите внимание, что IPv6 требует использования рекламных сообщений
маршрутизатора для идентификации шлюза по умолчанию.
2.
При необходимости настройте, чтобы dhcpv6 запускался автоматически при
загрузке системы:
## systemctl enable dhcpd6
3.
Запустите службу dhcpv6:
## systemctl start dhcpd6
Настройка службы DHCP для подсетей, не подключенных напрямую к DHCP-серверу
Используйте следующую процедуру, если DHCP-сервер напрямую не подключен к
подсети, для которой сервер должен отвечать на запросы DHCP. Это необходимо,
если агент ретрансляции DHCP пересылает запросы на DHCP-сервер, поскольку ни
один из интерфейсов DHCP-сервера напрямую не подключен к подсети, которую
должен обслуживать сервер.
В зависимости от того, нужно ли предоставить DHCP для IPv4, IPv6 или обоих
протоколов, см. Процедуру для:
•
•
Сети IPv4
Сети IPv6
Предварительные условия:
•
•
Права root пользователя.
Пакет dhcp-сервера установлен.
Процедура:
227
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
1.
•
Для сетей IPv4:
Отредактируйте файл /etc/dhcp/dhcpd.conf.
При необходимости добавьте глобальные параметры, которые dhcpd
использует по умолчанию, если никакие другие директивы не содержат этих
параметров:
option domain-name "example.ru";
default-lease-time 86400;
В этом примере задается доменное имя по умолчанию для подключения к example.ru, а
время аренды по умолчанию равно 86400 секундам (1 день).
•
Добавьте авторитетное утверждение в новую строку:
authoritative;
Примечание: Без утверждения authority служба dhcpd не отвечает на сообщения
DHCPREQUEST с помощью DHCPNAK, если клиент запрашивает адрес, который
находится за пределами пула.
•
Добавьте объявление общей сети, например следующее, для подсетей IPv4,
которые напрямую не подключены к интерфейсу сервера:
shared-network example {
option domain-name-servers 192.0.2.1;
...
subnet 192.0.2.0 netmask 255.255.255.0 {
range 192.0.2.20 192.0.2.100;
option routers 192.0.2.1;
}
subnet 198.51.100.0 netmask 255.255.255.0 {
range 198.51.100.20 198.51.100.100;
option routers 198.51.100.1;
}
...
}
В этом примере добавляется объявление общей сети, которое содержит объявление
подсети как для сетей 192.0.2.0/24, так и для сетей 198.51.100.0/24. При такой
конфигурации DHCP-сервер назначает следующие параметры клиенту, который
отправляет DHCP-запрос из одной из этих подсетей:
228
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
•
•
IP DNS-сервера для клиентов из обеих подсетей: 192.0.2.1.
Свободный IPv4-адрес из диапазона, определенного в параметре range, в
зависимости от того, из какой подсети клиент отправил запрос.
Шлюз по умолчанию - либо 192.0.2.1, либо 198.51.100.1 в зависимости от того,
из какой подсети клиент отправил запрос.
Добавьте объявление для подсети, к которой сервер подключен напрямую, и
используйте для доступа к удаленным подсетям, указанным в разделе общая
сеть выше:
subnet 203.0.113.0 netmask 255.255.255.0 {
}
Примечание: Если сервер не предоставляет службу DHCP для этой подсети,
объявление подсети должно быть пустым, как показано в примере. Без объявления
непосредственно подключенной подсети dhcpd не запускается.
2.
При необходимости настройте, чтобы dhcpd запускался автоматически при
загрузке системы:
## systemctl enable dhcpd
3.
Запустите dhcpd службу:
## systemctl start dhcpd
•
1.
•
Для сетей IPv6:
Отредактируйте файл /etc/dhcp/dhcpd6.con.
При необходимости добавьте глобальные параметры, которые dhcpd
использует по умолчанию, если никакие другие директивы не содержат этих
параметров:
option dhcp6.domain-search "example.ru";
default-lease-time 86400;
В этом примере задается доменное имя по умолчанию для подключения к example.ru, а
время аренды по умолчанию равно 86400 секундам (1 день).
•
Добавьте авторитетное утверждение в новую строку:
authoritative;
229
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Примечание: Без утверждения authority служба dhcpd не отвечает на сообщения
DHCPREQUEST с помощью DHCPNAK, если клиент запрашивает адрес, который
находится за пределами пула.
•
Добавьте объявление общей сети, например следующее, для подсетей IPv6,
которые напрямую не подключены к интерфейсу сервера:
shared-network example {
option domain-name-servers 2001:db8:0:1::1:1
..
subnet6 2001:db8:0:1::1:0/120 {
range6 2001:db8:0:1::1:20 2001:db8:0:1::1:100
}
subnet6 2001:db8:0:1::2:0/120 {
range6 2001:db8:0:1::2:20 2001:db8:0:1::2:100
}
...
}
В этом примере добавляется объявление общей сети, содержащее объявление
подсети 6 как для сетей 2001:db8:0:1::1:0/120, так и для сетей 2001:db8:0:1::2:0/120.
При такой конфигурации DHCP-сервер назначает следующие параметры клиенту,
который отправляет DHCP-запрос из одной из этих подсетей:
•
•
IP DNS-сервера для клиентов из обеих подсетей - 2001:db8:0:1::1:1.
Свободный IPv6-адрес из диапазона, определенного в параметре range6, в
зависимости от того, из какой подсети клиент отправил запрос.
Обратите внимание, что IPv6 требует использования рекламных сообщений
маршрутизатора для идентификации шлюза по умолчанию.
•
Добавьте объявление subnet6 для подсети, к которой сервер подключен
напрямую, и используйте для доступа к удаленным подсетям, указанным выше в
разделе shared-network:
subnet6 2001:db8:0:1::50:0/120 {
}
Примечание: Если сервер не предоставляет службу DHCP для этой подсети,
объявление subnet6 должно быть пустым, как показано в примере. Без объявления
непосредственно подключенной подсети dhcpd не запускается.
230
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
2.
При необходимости настройте, чтобы dhcpd6 запускался автоматически при
загрузке системы:
## systemctl enable dhcpd6
3.
Запустите dhcpd6 службу:
## systemctl start dhcpd6
Назначение статического адреса хосту с помощью DHCP
Используя назначение хоста, можно настроить DHCP-сервер так, чтобы тот
назначал MAC-адресу фиксированный IP-адрес управления доступом к multimedia
файлу хоста. Используйте этот метод, чтобы всегда назначать один и тот же IPадрес серверу или сетевому устройству.
В зависимости от того, нужно ли настроить фиксированные адреса для IPv4, IPv6 или
обоих протоколов, см. процедуру для:
•
•
Сети IPv4
Сети IPv6
Предварительные условия:
•
•
Служба dhcpd настроена и запущена.
Права пользователя root.
Процедура:
•
1.
•
Для сетей IPv4:
Отредактируйте файл /etc/dhcp/dhcpd.conf:
Добавьте назначение хоста:
host server.example.ru {
hardware ethernet 52:54:00:72:2f:6e;
fixed-address 192.0.2.130;
}
В этом примере DHCP-сервер настраивается таким образом, чтобы он всегда
назначал IP-адрес 192.0.2.130 хосту с MAC-адресом 52:54:00:72:2f:6e.
Служба dhcpd идентифицирует системы по MAC-адресу, указанному в параметре
фиксированного адреса, а не по имени в объявлении хоста. Как следствие, можно
присвоить этому имени любую строку, которая не соответствует другим
231
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
назначениям хоста. Чтобы настроить одну и ту же систему для нескольких сетей,
используйте другое имя, в противном случае dhcpd не запустится.
•
2.
При необходимости добавьте дополнительные настройки к назначению хоста,
которые специфичны для этого хоста.
Перезапустите службу dhcpd:
## systemctl start dhcpd
•
1.
•
Для сетей IPv6:
Отредактируйте файл /etc/dhcp/dhcpd6.conf:
Добавьте назначение хоста:
host server.example.ru {
hardware ethernet 52:54:00:72:2f:6e;
fixed-address6 2001:db8:0:1::200;
}
В этом примере DHCP-сервер настраивается так, чтобы он всегда назначал хосту
IP-адрес 2001:db8:0:1::20 с MAC-адресом 52:54:00:72:2f:6e.
Служба dhcpd идентифицирует системы по MAC-адресу, указанному в параметре
fixed-address6, а не по имени в объявлении хоста. Как следствие, можно присвоить
этому имени любую строку, если оно уникально для других объявлений хоста. Чтобы
настроить одну и ту же систему для нескольких сетей, используйте другое имя,
поскольку в противном случае dhcpd не запустится.
•
2.
При необходимости добавьте дополнительные настройки к объявлению хоста,
которые специфичны для этого хоста.
Перезапустите службу dhcpd6:
## systemctl start dhcpd6
Использование объявления группы для одновременного применения параметров к
нескольким хостам, подсетям и общим сетям
Используя назначение группы, можно применить одни и те же параметры к
нескольким хостам, подсетям и общим сетям.
Обратите внимание, что процедура в этом разделе описывает использование
назначения группы для узлов, но шаги одинаковы для подсетей и общих сетей.
В зависимости от того, нужно ли настроить группу для IPv4, IPv6 или обоих
протоколов, см. процедуру для:
232
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
Сети IPv4
Сети IPv6
Предварительные условия:
•
•
Служба dhcpd настроена и запущена.
Права пользователя root.
Процедура:
•
1.
•
Для сетей IPv4:
Отредактируйте /etc/dhcp/dhcpd.conf файл:
Добавьте групповое объявление:
group {
option domain-name-servers 192.0.2.1;
host server1.example.ru {
hardware ethernet 52:54:00:72:2f:6e;
fixed-address 192.0.2.130;
}
host server2.example.ru {
hardware ethernet 52:54:00:1b:f3:cf;
fixed-address 192.0.2.140;
}
}
Это определение группы объединяет две записи хоста. Служба dhcpd применяет
значение, заданное в параметре option domain-name-servers, к обоим хостам в группе.
•
2.
При необходимости добавьте дополнительные параметры к объявлению
группы, которые специфичны для этих узлов.
Перезапустите службу dhcpd:
## systemctl start dhcpd
•
1.
•
Для сетей IPv6:
Отредактируйте /etc/dhcp/dhcpd6.conf файл:
Добавьте групповое объявление:
group {
option dhcp6.domain-search "example.ru";
233
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
host server1.example.ru {
hardware ethernet 52:54:00:72:2f:6e;
fixed-address 2001:db8:0:1::200;
}
host server2.example.ru {
hardware ethernet 52:54:00:1b:f3:cf;
fixed-address 2001:db8:0:1::ba3;
}
}
Это определение группы объединяет две записи хоста. Служба dhcpd применяет
значение, заданное в параметре option dhcp6.domain-search, к обоим хостам в группе.
•
2.
При необходимости добавьте дополнительные параметры к объявлению
группы, которые специфичны для этих узлов.
Перезапустите dhcpd6 службу:
## systemctl start dhcpd6
Восстановление поврежденной базы данных аренды
Если DHCP-сервер регистрирует ошибку, связанную с lease database (базой данных
аренды), например, Corrupt lease file - possible data loss! (поврежденный файл аренды возможна потеря данных!), Можно восстановить базу данных аренды из копии,
созданной службой dhcpd. Обратите внимание, что эта копия может не отражать
последнее состояние базы данных.
Предупреждение: Если удаляется база данных аренды вместо того, чтобы заменить
ее резервной копией, теряется вся информация о назначенных в данный момент
договорах аренды. Как следствие, DHCP-сервер может назначать договоры аренды
клиентам, которые ранее были назначены другим хостам и срок действия их еще не
истек. Это приводит к конфликтам IP-адресов.
В зависимости от того, нужно ли восстановить DHCPv4, DHCPv6 или обе базы данных,
см. процедуру для:
•
•
Восстановление базы данных аренды DHCPv4
Восстановление базы данных аренды DHCPv6
Предварительные условия:
•
•
Права пользователя root.
База данных аренды повреждена.
Процедура:
234
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
1.
Восстановление базы данных аренды DHCPv4:
Остановите службу dhcpd:
## systemctl stop dhcpd
2.
Переименуйте поврежденную базу данных аренды:
## mv /var/lib/dhcpd/dhcpd.leases /var/lib/dhcpd/dhcpd.leases.corrupt
3.
Восстановите копию базы данных аренды, созданную службой dhcp при
обновлении базы данных аренды:
## cp -p /var/lib/dhcpd/dhcpd.leases~ /var/lib/dhcpd/dhcpd.leases
Примечание: Если существует более свежая резервная копия базы данных аренды,
восстановите резервную копию.
4.
Запустите службу dhcpd:
## systemctl start dhcpd
Восстановление базы данных аренды DHCPv6:
1.
Остановите службу dhcpd6:
## systemctl stop dhcpd6
2.
Переименуйте поврежденную базу данных аренды:
## mv /var/lib/dhcpd/dhcpd6.leases /var/lib/dhcpd/dhcpd6.leases.corrupt
3.
Восстановите копию базы данных аренды, созданную службой dhcp при
обновлении базы данных аренды:
## cp -p /var/lib/dhcpd/dhcpd6.leases~ /var/lib/dhcpd/dhcpd6.leases
Примечание: Если существует более свежая резервная копия базы данных аренды,
восстановите резервную копию.
4.
Запустите службу dhcpd6:
## systemctl start dhcpd6
235
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Настройка агента ретрансляции DHCP
Агент ретрансляции DHCP (dhcrelay) позволяет ретранслировать запросы DHCP и
BOOTP из подсети, в которой нет DHCP-сервера, на один или несколько DHCPсерверов в других подсетях. Когда DHCP-клиент запрашивает информацию, агент
ретрансляции DHCP перенаправляет запрос в указанный список DHCP-серверов.
Когда DHCP-сервер возвращает ответ, агент ретрансляции DHCP пересылает этот
запрос клиенту.
В зависимости от того, нужно ли настроить ретрансляцию DHCP для IPv4, IPv6 или
обоих протоколов, см. Процедуру для:
•
•
Сети IPv4
Сети IPv6
Предварительные условия:
Права пользователя root.
Процедура:
•
1.
Для сетей IPv4:
Установите пакет dhcp-relay:
## yum install dhcp-relay
2.
Скопируйте файл /lib/systemd/system/dhcrelay.service в /etc/systemd/system/
каталог:
## cp /lib/systemd/system/dhcrelay.service /etc/systemd/system/
Не редактируйте файл /usr/lib/systemd/system/dhcrelay.service. Будущие обновления
пакета dhcp-relay могут переопределить изменения.
3.
Отредактируйте файл /etc/systemd/system/dhcrelay.service и добавьте
параметр интерфейса -i вместе со списком IP-адресов серверов DHCPv4,
которые отвечают за подсеть:
ExecStart=/usr/sbin/dhcrelay -d --no-pid **-i enp1s0192.0.2.1
С помощью этих дополнительных параметров dhcrelay прослушивает запросы DHCPv4
в интерфейсе enp1s0 и пересылает их на DHCP-сервер с IP 192.0.2.1.
4.
Перезагрузите systemd manager конфигурацию:
236
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## systemctl daemon-reload
5.
При необходимости настройте, чтобы служба dhcrelay запускалась при
загрузке системы:
## systemctl enable dhcrelay.service
6.
Запустите службу dhcrelay:
## systemctl start dhcrelay.service
•
1.
Для сетей IPv6:
Установите пакет dhcp-relay:
## yum install dhcp-relay
2.
Скопируйте файл /lib/systemd/system/dhcrelay.service в каталог
/etc/systemd/system/ и назовите файл dhcrelay6.service:
## cp /lib/systemd/system/dhcrelay.service /etc/systemd/system/dhcrelay6.service
Не редактируйте файл / usr/lib/systemd/system/dhcrelay.service. Будущие обновления
пакета dhcp-relay могут переопределить изменения.
3.
Отредактируйте файл /etc/systemd/system/dhcrelay6.service и добавьте
параметры -l receiving_interface и -u outgoing_interface:
ExecStart=/usr/sbin/dhcrelay -d --no-pid **-l enp1s0-u enp7s0
С помощью этих дополнительных параметров dhcrelay прослушивает запросы DHCPv6
на интерфейсе enp1s0 и пересылает их в сеть, подключенную к интерфейсу enp7s0.
4.
Перезагрузите systemd manager конфигурацию:
## systemctl daemon-reload
5.
При необходимости настройте, чтобы служба dhcrelay6 запускалась при
загрузке системы:
## systemctl enable dhcrelay6.service
237
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
6.
Запустите службу dhcrelay6:
## systemctl start dhcrelay6.service
Развертывание различных типов серверов
Настройка веб-сервера Apache HTTP
Введение в веб-сервер Apache HTTP
Веб-сервер - это сетевая служба, которая предоставляет контент клиенту через
Интернет. Обычно это означает веб-страницы, но могут быть представлены и
любые другие документы. Веб-серверы также известны как HTTP-серверы, поскольку
они используют транспортный протокол гипертекста (HTTP).
Apache HTTP Server httpd - это веб-сервер с открытым исходным кодом,
разработанный Apache Software Foundation. В этом разделе рассматриваются
некоторые из недавно добавленных функций и приводятся инструкции по обновлению
предыдущих файлов конфигурации.
Заметные изменения в HTTP-сервере Apache
Функции включают в себя:
•
•
•
•
•
•
Поддержка HTTP/2 обеспечивается пакетом mod_http2, который является
частью модуля httpd.
Поддержка активации сокета systemd.
Поддержка модулей:
– mod_proxy_hcheck - модуль проверки работоспособности прокси;
– mod_proxy_uwsgi - прокси-интерфейс шлюза веб-сервера (WSGI);
– mod_proxy_fdpass - обеспечивает поддержку передачи сокета клиента
другому процессу;
– mod_cache_socache - HTTP-кеш, использующий, например, серверную часть
memcache;
– mod_md - службу сертификатов протокола ACME SSL/TLS;
Следующие модули загружаются по умолчанию:
– mod_request;
– mod_macro;
– mod_watchdog.
Добавлен новый подпакет httpd-filesystem, который содержит базовую
структуру каталогов для HTTP-сервера Apache, включая правильные
разрешения для каталогов.
Новый httpd-init.service заменяет скрипт %post для создания пары ключей
mod_ssl с самоподписью.
238
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
•
Автоматическая подготовка и обновление сертификатов TLS с использованием
протокола Automatic Certificate Management Environment (ACME)
поддерживается пакетом mod_md.
HTTP-сервер Apache поддерживает загрузку сертификатов TLS и закрытых
ключей из аппаратных токенов безопасности непосредственно из модулей
PKCS#11. В результате конфигурация mod_ssl может использовать URL-адреса
PKCS#11 для идентификации закрытого ключа TLS и, необязательно,
сертификата TLS в директивах SSLCertificateKeyFile и SSLCertificateFile.
Поддерживается директива ListenFree в файле /etc/httpd/conf/httpd.conf.
Аналогично директиве Listen, ListenFree предоставляет информацию об IP-адресах,
портах или комбинациях IP-адресов и портов, которые прослушивает сервер. Однако
в ListenFree опция сокета IP_FREEBIND включена по умолчанию. Следовательно, httpd
разрешено привязываться к нелокальному IP-адресу или к IP-адресу, который еще не
существует. Это позволяет httpd прослушивать сокет, не требуя, чтобы базовый
сетевой интерфейс или указанный динамический IP-адрес были активны в то время,
когда httpd пытается привязаться к нему.
Для получения более подробной информации о ListenFree смотрите следующую
таблицу:
Таблица. Синтаксис, статус и модули директивы ListenFree
Синтаксис
Статус
Модули
ListenFree [IP-адрес:] portnumber
[protocol]
MPM
event, worker, prefork, mpm_winnt,
mpm_netware, mpmt_os2
Используйте mod_ssl вместо mod_perl
•
•
•
Тип базы данных аутентификации DBM по умолчанию, используемый HTTPсервером Apache в SberLinux, был изменен с SDBM на db5.
Модуль mod_wsgi для HTTP-сервера Apache обновлен до версии Python 3.
Приложения WSGI поддерживаются только с Python 3 и должны быть перенесены
с Python 2.
Модуль многопроцессорной обработки (MPM), настроенный по умолчанию с
HTTP-сервером Apache, изменился с многопроцессорной разветвленной модели
(известной как prefork) на высокопроизводительную многопоточную модель
event.
Любые сторонние модули, которые не являются потокобезопасными, должны быть
заменены или удалены. Чтобы изменить настроенный MPM, отредактируйте
/etc/httpd/conf.modules.d/00-mpm.conf файл. Смотрите справочную страницу
httpd.service(8) для получения дополнительной информации.
•
Минимальные UID и GID, разрешенные для пользователей suEXEC, равны 1000 и
500 соответственно (ранее 100 и 100%).
239
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
•
Файл /etc/sysconfig/httpd больше не является поддерживаемым интерфейсом для
настройки переменных среды для службы httpd. Справочная страница
httpd.service(8) была добавлена для systemd службы.
При остановке службы httpd по умолчанию используется «изящная остановка».
Модуль mod_auth_kerb был заменен модулем mod_auth_gssapi.
Обновление конфигурации
Чтобы обновить файлы конфигурации с версии HTTP-сервера Apache выберите один
из следующих вариантов:
Если для установки переменных окружения используется файл /etc/sysconfig/httpd,
создайте вместо него раскрывающийся файл systemd. Если используются какие-либо
сторонние модули, убедитесь, что они совместимы с многопоточным MPM. Если
используется suexec, убедитесь, что идентификаторы пользователя и группы
соответствуют новому минимуму. Можно проверить конфигурацию на наличие
возможных ошибок, используя следующую команду:
## apachectl configtest
Syntax OK
Файлы конфигурации Apache
Когда httpd служба запущена, по умолчанию она считывает конфигурацию из
местоположений, перечисленных в таблице ниже.
Таблица. Файлы конфигурации службы httpd
Путь
Описание
/etc/httpd/conf/httpd.conf
Основной конфигурационный файл.
/etc/httpd/conf.d/
Вспомогательный каталог для файлов конфигурации, которые
включены в основной файл конфигурации.
/etc/httpd/conf.modules.d/
Вспомогательный каталог для файлов конфигурации, которые
загружают установленные динамические модули. В конфигурации
по умолчанию эти файлы конфигурации обрабатываются в первую
очередь
Хотя конфигурация по умолчанию подходит для большинства ситуаций, можно
использовать и другие параметры конфигурации. Чтобы любые изменения
конфигурации вступили в силу, перезапустите веб-сервер.
1.
Чтобы проверить конфигурацию на наличие возможных ошибок, введите
следующее в командной строке:
240
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## apachectl configtest
Syntax OK
2.
Чтобы упростить восстановление после ошибок, сделайте копию исходного
файла перед его редактированием.
Управление службой httpd
В этом разделе описано, как запустить, остановить и перезапустить httpd службу.
Предварительные условия:
•
Установлен HTTP-сервер Apache.
Процедура:
•
Чтобы запустить httpd службу, введите:
systemctl start httpd
•
Чтобы остановить httpd службу, введите:
## systemctl stop httpd
•
Чтобы перезапустить httpd службу, введите:
## systemctl restart httpd
Настройка HTTP-сервера Apache с одним экземпляром
В этом разделе описывается, как настроить HTTP-сервер Apache с одним
экземпляром для обслуживания статического HTML-контента.
Следуйте процедуре, описанной в этом разделе, если веб-сервер должен
предоставлять одинаковый контент для всех доменов, связанных с сервером. Если
можно предоставлять разный контент для разных доменов, настройте виртуальные
хосты на основе имен. Дополнительные сведения см. в разделе «Настройка
виртуальных хостов Apache на основе имен».
Процедура:
1.
Установите httpd пакет:
241
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## yum install httpd
2.
Откройте TCP-порт 80 в локальном межсетевом экране:
## firewall-cmd --permanent --add-port=80/tcp
## firewall-cmd --reload
3.
Включите и запустите Обслуживание httpd:
## systemctl enable --now httpd
4.
При необходимости добавьте HTML-файлы в каталог /var/www/html/.
Примечание: При добавлении содержимого в /var/www/html/ файлы и каталоги должны
быть доступны для чтения пользователю, под которым httpd запускается по
умолчанию. Владельцем контента может быть либо пользователь root и группа
пользователей root, либо другой пользователь или группа по выбору
администратора. Если владельцем содержимого является пользователь root и группа
пользователей root, файлы должны быть доступны для чтения другими
пользователями. Контекст SELinux для всех файлов и каталогов должен быть
httpd_sys_content_t, который применяется по умолчанию ко всему содержимому в
каталоге /var/www.
Этапы проверки:
Подключитесь с помощью веб-браузера к http://server_IP_or_host_name/.
Если каталог /var/www/html/ пуст или не содержит index.html или файл index.htm,
Apache отображает тестовую страницу SberLinux. Если /var/www/html/ содержит
HTML-файлы с другим именем, Можно загрузить их, введя URL-адрес этого файла,
например http://server_IP_or_host_name/example.html.
Настройка виртуальных хостов Apache на основе имен
Виртуальные хосты на основе имен позволяют Apache обслуживать различный
контент для разных доменов, которые разрешаются по IP-адресу сервера.
Процедура в этом разделе описывает настройку виртуального хоста как для
example.ru и example.net домен с отдельными корневыми каталогами документов. Оба
виртуальных хоста обслуживают статический HTML-контент.
Предварительные условия:
242
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
Клиенты и веб-сервер разрешают example.ru и example.net домен к IP-адресу
веб-сервера.
Обратите внимание, что необходимо вручную добавить эти записи на свой
DNS-сервер.
Процедура:
1.
Установите httpd пакет:
## yum install httpd
2.
•
Отредактируйте файл /etc/httpd/conf/httpd.conf:
Добавьте следующую конфигурацию виртуального хоста для example.ru домен:
<VirtualHost *:80
DocumentRoot "/var/www/example.ru/"
ServerName example.ru
CustomLog /var/log/httpd/example.ru_access.log combined
ErrorLog /var/log/httpd/example.ru_error.log
</VirtualHost
Эти параметры настраивают следующее:
•
•
•
Все настройки в директиве <VirtualHost *:80 специфичны для этого
виртуального хоста.
DocumentRoot задает путь к веб-контенту виртуального хоста.
ServerName задает домены, для которых этот виртуальный хост обслуживает
контент.
Чтобы задать несколько доменов, добавьте параметр ServerAlias в конфигурацию и
укажите дополнительные домены, разделенные пробелом в этом параметре.
•
•
Пользовательский журнал задает путь к журналу доступа виртуального хоста.
Журнал ошибок задает путь к журналу ошибок виртуального хоста.
Примечание: Apache использует первый виртуальный хост, найденный в
конфигурации, также для запросов, которые не соответствуют ни одному домену,
установленному в параметрах ServerName и ServerAlias. Это также включает
запросы, отправленные на IP-адрес сервера.
3.
Добавьте аналогичную конфигурацию виртуального хоста для example.net
домена:
<VirtualHost *:80
DocumentRoot "/var/www/example.net/"
243
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
ServerName example.net
CustomLog /var/log/httpd/example.net_access.log combined
ErrorLog /var/log/httpd/example.net_error.log
</VirtualHost
4.
Создайте корни документа для обоих виртуальных хостов:
## mkdir /var/www/example.ru/
## mkdir /var/www/example.net/
5.
Если задаете пути в DocumentRoot параметры, которые не входят в /var/www/,
установите httpd_sys_content_t контекст в обоих корнях документа:
## semanage fcontext -a -t httpd_sys_content_t "/srv/example.ru(/.*)?"
## restorecon -Rv /srv/example.ru/
## semanage fcontext -a -t httpd_sys_content_t "/srv/example.net(/.\*)?"
## restorecon -Rv /srv/example.net/
Эти команды устанавливают httpd_sys_content_t контекст на
/srv/example.ru//srv/example.net/ каталог.
Обратите внимание, что необходимо установить policycoreutils-python-utils пакет
для запуска restorecon команды.
6.
Откройте порт 80 в локальном межсетевом экране:
## firewall-cmd --permanent --add-port=80/tcp
## firewall-cmd --reload
7.
Включите и запустите обслуживание httpd:
## systemctl enable --now httpd
Этапы проверки:
1.
Создайте отдельный файл примера в корне документа каждого виртуального
хоста:
## echo "vHost example.ru" /var/www/example.ru/index.html# echo "vHost example.net"
/var/www/example.net/index.html
2.
Используйте браузер и подключитесь к http://example.ru. Веб-сервер
показывает пример файла с example.ru виртуального хоста.
244
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
3.
Используйте браузер и подключитесь к http://example.net. Веб-сервер
показывает пример файла с example.net виртуального хоста.
Настройка проверки подлинности Kerberos для веб-сервера Apache HTTP
Для выполнения аутентификации Kerberos на веб-сервере Apache HTTP SberLinux
использует модуль Apache mod_auth_gssapi. Общий API служб безопасности (GSSAPI) это интерфейс для приложений, которые делают запросы на использование
библиотек безопасности, таких как Kerberos. Сервис gssproxy позволяет реализовать
разделение привилегий для httpd сервера, что оптимизирует этот процесс с точки
зрения безопасности.
Примечание: Модуль mod_auth_gssapi заменяет удаленный модуль mod_auth_kerb.
Предварительные условия:
•
•
Пакеты httpd и gssproxy установлены.
Веб-сервер Apache настроен и httpd служба запущена.
Настройка GSS-Proxy в среде IdM
Эта процедура описывает, как настроить GSS-прокси для выполнения
аутентификации Kerberos на веб-сервере Apache HTTP.
Процедура:
1.
Включите доступ к keytab HTTP/<ИМЯ_СЕРВЕРА @realm principal файлу, создав
участника службы:
## ipa service-add HTTP/<SERVER_NAME
2.
Извлеките таблицу ключей для участника, хранящуюся в
/etc/gssproxy/http.keytab файле:
## ipa-getkeytab -s $(awk '/^server =/ {print $3}' /etc/ipa/default.conf) -k
/etc/gssproxy/http.keytab -p HTTP/$(hostname -f)
Этот шаг устанавливает разрешения на 400, таким образом, только пользователь
root имеет доступ к файлу keytab. Пользователь apache этого не делает.
3.
Создайте файл /etc/gssproxy/80-httpd.conf со следующим содержимым:
[service/HTTP]
mechs = krb5
245
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
cred_store = keytab:/etc/gssproxy/http.keytab
cred_store = keytab:/etc/gssproxy/http.keytab
euid = apache
4.
Перезапустите и включите службу gssproxy:
## systemctl restart gssproxy.service
## systemctl enable gssproxy.service
Настройка проверки подлинности Kerberos для каталога, совместно используемого
веб-сервером Apache HTTP
Эта процедура описывает, как настроить проверку подлинности Kerberos для
каталога /var/www/html/private/.
Предварительные условия:
Служба gssproxy настроена и запущена.
Процедура:
1.
Настройте модуль mod_auth_gssapi для защиты каталога
/var/www/html/private/:
<Location /var/www/html/private
AuthType GSSAPI
AuthName "GSSAPI Login"
Require valid-user
</Location
2.
Создайте файл /etc/systemd/system/httpd.service со следующим содержимым:
.include /lib/systemd/system/httpd.service
[Service]
Environment=GSS_USE_PROXY=11
3.
Перезагрузите конфигурацию системы:
## systemctl daemon-reload
4.
Перезапустите httpd службу:
246
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## systemctl restart httpd.service
Этапы проверки:
1.
Получите Kerberos ticket:
## kinit
2.
Откройте URL-адрес защищенного каталога в браузере.
Настройка шифрования TLS на HTTP-сервере Apache
По умолчанию Apache предоставляет контент клиентам, используя
незашифрованное HTTP-соединение. В этом разделе описывается, как включить
шифрование TLS и настроить часто используемые параметры, связанные с
шифрованием, на HTTP-сервере Apache.
Предварительные условия:
HTTP-сервер Apache установлен и запущен.
Добавление шифрования TLS на HTTP-сервер Apache
В этом разделе описывается, как включить шифрование TLS на HTTP-сервере Apache
для example.ru домен.
Предварительные условия:
•
•
HTTP-сервер Apache установлен и запущен.
Закрытый ключ хранится в /etc/pki/tls/private/example.ru.key файле.
Для получения подробной информации о создании закрытого ключа и запроса на
подписание сертификата (CSR), а также о том, как запросить сертификат у центра
сертификации (CA), см. документацию CA. В качестве альтернативы, если центр
сертификации поддерживает протокол ACME, Можно использовать модуль mod_md
для автоматизации получения и предоставления сертификатов TLS.
•
•
•
Сертификат TLS хранится в /etc/pki/tls/certs/example.ru.crt файле. Если
используете другой путь, адаптируйте соответствующие шаги процедуры.
Сертификат CA хранится в /etc/pki/tls/certs/ca.crt файле. Если используете
другой путь, адаптируйте соответствующие шаги процедуры.
Клиенты и веб-сервер преобразуют имя хоста сервера в IP-адрес веб-сервера.
Процедура:
1.
Установите пакет mod_ssl:
247
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## yum install mod_ssl
2.
•
Отредактируйте файл / etc/httpd/conf.d/ssl.conf и добавьте следующие
настройки в директиву <VirtualHost default:443:
Установите имя сервера:
ServerName example.ru
Примечание: Имя сервера должно соответствовать записи, заданной в поле Common
Name сертификата.
•
При необходимости: если сертификат содержит дополнительные имена хостов
в поле Subject Alt Names (SAN), можно настроить mod_ssl для обеспечения
шифрования TLS также для этих имен хостов. Чтобы настроить это, добавьте
параметр ServerAliases с соответствующими именами:
ServerAlias www.example.ru server.example.ru
•
Задайте пути к закрытому ключу, сертификату сервера и сертификату CA:
SSLCertificateKeyFile "/etc/pki/tls/private/example.ru.key"
SSLCertificateFile "/etc/pki/tls/certs/example.ru.crt"
SSLCACertificateFile "/etc/pki/tls/certs/ca.crt"
3.
По соображениям безопасности настройте, чтобы только пользователь root
мог получить доступ к файлу закрытого ключа:
## chown root:root /etc/pki/tls/private/example.ru.key
## chmod 600 /etc/pki/tls/private/example.ru.key
Предупреждение: Если к закрытому ключу получили доступ неавторизованные
пользователи, отмените сертификат, создайте новый закрытый ключ и запросите
новый сертификат. В противном случае соединение TLS больше не является
безопасным.
4.
Откройте порт 443 в локальном межсетевом экране:
## firewall-cmd --permanent --add-port=443/tcp
## firewall-cmd --reload
5.
Перезапустите httpd службу:
248
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## systemctl restart httpd
Примечание: Если файл закрытого ключа защищен паролем, необходимо вводить этот
пароль каждый раз при запуске службы httpd.
Этапы проверки:
Используйте браузер и подключайтесь к https://example.ru.
Настройка поддерживаемых версий протокола TLS на HTTP-сервере Apache
По умолчанию HTTP-сервер Apache на SberLinux использует общесистемную политику
шифрования, которая определяет безопасные значения по умолчанию, и они также
совместимы с последними браузерами. Например, политика по умолчанию
определяет, что в apache включены только версии протоколов TLSv1.2 и TLSv1.3.
В этом разделе описывается, какие версии протокола TLS поддерживает HTTP-сервер
Apache. Следуйте процедуре, если в среде требуется включить только определенные
версии протокола TLS, например:
•
•
Если среда требует, чтобы клиенты также могли использовать слабый
протокол TLS1 (TLSv1.0) или TLS1.1.
Если настроить, что Apache поддерживает только протокол TLSv1.2 или
TLSv1.3.
Предварительные условия:
Шифрование TLS включено на сервере, как описано в разделе «Добавление шифрования
TLS на HTTP-сервер Apache».
Процедура:
1.
Отредактируйте файл /etc/httpd/conf/httpd.conf и добавьте следующий
параметр в директиву <VirtualHost, для которой можно установить версию
протокола TLS. Например, чтобы включить только протокол TLSv1.3:
SSLProtocol -All TLSv1.3
2.
Перезапустите службу httpd:
## systemctl restart httpd
Этапы проверки:
1.
Используйте следующую команду, чтобы убедиться, что сервер поддерживает
TLSv1.3:
249
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## openssl s_client -connect example.ru:443 -tls1_3
2.
Используйте следующую команду, чтобы убедиться, что сервер не
поддерживает TLSv1.2:
## openssl s_client -пример подключения.com:443 -tls1_2
Если сервер не поддерживает протокол, команда возвращает сообщение об ошибке:
140111600609088:error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol
version:ssl/record/rec_layer_s3.c:1543:SSL alert number 70
3.
При необходимости повторите команду для других версий протокола TLS.
Настройка поддерживаемых шифров на HTTP-сервере Apache
По умолчанию HTTP-сервер Apache использует общесистемную политику шифрования,
которая определяет безопасные значения по умолчанию, и они также совместимы с
последними браузерами. Список шифров, разрешенных общесистемной
криптографией, см. в файле /etc/crypto-policies/back-ends/openssl.config.
В этом разделе описывается, как вручную настроить, какие шифры поддерживает
HTTP-сервер Apache. Следуйте процедуре, если в среде требуются определенные
шифры.
Предварительные условия:
Шифрование TLS включено на сервере, как описано в разделе «Добавление шифрования
TLS на HTTP-сервер Apache».
Процедура:
1.
Отредактируйте файл /etc/httpd/conf/httpd.conf и добавьте параметр
SSLCipherSuite в директиву <VirtualHost, для которой необходимо установить
шифры TLS:
SSLCipherSuite "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:!SHA1:!SHA256"
Этот пример включает только шифры EECDH +AESGCM, EDH+AESGCM, AES256+EECDH и
AES256+EDH и отключает все шифры, которые используют код аутентификации
сообщений SHA1 и SHA256 (MAC).
2.
Перезапустите службу httpd:
250
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## systemctl restart httpd
Этапы проверки:
Для отображения списка шифров, поддерживаемых HTTP-сервером Apache:
•
Установите пакет nmap:
## yum install nmap
•
Используйте утилиту nmap для отображения поддерживаемых шифров:
## nmap --script ssl-enum-ciphers -p 443 example.ru
...
PORT STATE SERVICE
443/tcp open https
| ssl-enum-ciphers:
| TLSv1.2:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (ecdh_x25519) - A
| TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) - A
| TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (ecdh_x25519) - A
...
Настройка аутентификации сертификата клиента TLS
Проверка подлинности по сертификату клиента позволяет администраторам
разрешать доступ к ресурсам на веб-сервере только тем пользователям, которые
проходят проверку подлинности с использованием сертификата. В этом разделе
описывается, как настроить проверку подлинности клиентского сертификата для
каталога /var/www/html/Example/.
Если HTTP-сервер Apache использует протокол TLS 1.3, некоторым клиентам
требуется дополнительная настройка. Например, в Firefox установите для
параметра security.tls.enable_post_handshake_authв меню about:configзначение true.
Предварительные условия:
Шифрование TLS включено на сервере, как описано в разделе Добавление шифрования
TLS на HTTP-сервер Apache.
Процедура:
251
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Отредактируйте файл /etc/httpd/conf/httpd.conf и добавьте следующие
параметры в директиву <VirtualHost, для которой можно настроить
аутентификацию клиента:
<Directory "/var/www/html/Example/"
SSLVerifyClient require
</Directory
Параметр SSLVerifyClient require определяет, что сервер должен успешно проверить
сертификат клиента, прежде чем клиент сможет получить доступ к содержимому в
каталоге /var/www/html/Example/.
2.
Перезапустите службу httpd:
## systemctl restart httpd
Этапы проверки:
1.
Используйте утилиту curl для доступа к https://example.ru/Example/ URL без
аутентификации клиента:
$ curl https://example.ru/Example/
curl: (56) OpenSSL SSL_read: error:1409445C:SSL routines:ssl3_read_bytes:tlsv13 **alert certificate
required**, errno 0
Ошибка указывает на то, что веб-серверу требуется проверка подлинности по
сертификату клиента.
2.
Передайте закрытый ключ и сертификат клиента, а также сертификат CA в
curl, чтобы получить доступ к тому же URL-адресу с проверкой подлинности
клиента:
$ curl --cacert ca.crt --key client.key --cert client.crt https://example.ru/Example/
Если запрос выполнен успешно, curl отображает index.html файл, хранящийся в
каталоге /var/www/html/Example/.
Руководство по установке HTTP-сервера Apache
Чтобы снизить риски, связанные с запуском веб-приложений на веб-сервере, путем
развертывания ModSecurity, установите пакеты mod_security и mod_security_crs для
HTTP-сервера Apache. Пакет mod_security_crs предоставляет базовый набор правил
(CRS) для модуля межсетевого экрана веб-приложений ModSecurity (WAF).
Процедура:
252
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Установите пакеты mod_security, mod_security_crs и httpd:
## yum install -y mod_security мод_security_crs httpd
Запустите сервер httpd:
## systemctl restart httpd
Проверка:
2.
Убедитесь, что межсетевой экран веб-приложений ModSecurity включен на
HTTP-сервере Apache:
## httpd -M | grep security
Убедитесь, что каталог /etc/httpd/modsecurity.d/activated_rules/ содержит правила,
предоставляемые mod_security_crs.
Работа с модулями
Будучи модульным приложением, служба httpd распространяется вместе с рядом
динамических общих объектов (DSO), которые могут быть динамически загружены или
выгружены во время выполнения по мере необходимости. Эти модули расположены в
/usr/lib64/httpd/modules/ каталоге.
Загрузка модуля
Чтобы загрузить определенный модуль DSO, используйте директиву LoadModule.
Обратите внимание, что модули, предоставляемые отдельным пакетом, часто
имеют свой собственный конфигурационный файл в /etc/httpd/conf.modules.d/
каталоге.
Загрузите DSO mod_ssl
LoadModule ssl_module модули/mod_ssl.so
После загрузки модуля перезапустите веб-сервер, чтобы перезагрузить
конфигурацию.
Написание модуля
Чтобы создать новый модуль DSO, убедитесь, что установлен пакет httpd-devel. Для
этого введите следующую команду от имени root:
253
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## yum install httpd-devel
Этот пакет содержит включаемые файлы, файлы заголовков и утилиту APache
eXtenSion (apxs), необходимую для компиляции модуля.
После написания можно создать модуль с помощью следующей команды:
## apxs -i -a -c module_name.c
Если сборка прошла успешно, можно загрузить модуль таким же образом, как и любой
другой модуль, распространяемый с HTTP-сервером Apache.
Экспорт закрытого ключа и сертификатов из базы данных NSS для их использования
в конфигурации веб-сервера Apache.
Эта процедура предполагает, что база данных NSS хранится в /etc/httpd/alias/, а
экспортированный закрытый ключ и сертификаты хранятся в каталоге /etc/pki/tls/.
Предварительные условия:
Закрытый ключ, сертификат и сертификат центра сертификации (CA) хранятся в
базе данных NSS.
Процедура:
1.
Перечислите сертификаты в базе данных NSS:
# certutil -d /etc/httpd/alias/ -L
Certificate Nickname
Trust Attributes
SSL,S/MIME,JAR/XPI
Example CA
C,,
Example Server Certificate
u,u,u
На следующих шагах понадобятся псевдонимы сертификатов.
2.
•
Чтобы извлечь закрытый ключ, необходимо временно экспортировать ключ в
файл PKCS #12:
Используйте псевдоним сертификата, связанного с закрытым ключом, чтобы
экспортировать ключ в файл PKCS #12:
## pk12util -o /etc/pki/tls/private/export.p12 -d /etc/httpd/alias/ -n "Example Server Certificate"
Enter password for PKCS12 file: password
254
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Re-enter password: password
pk12util: PKCS12 EXPORT SUCCESSFUL
Обратите внимание, что необходимо установить пароль для файла PKCS #12. Этот
пароль понадобится на следующем шаге.
•
Экспортируйте закрытый ключ из файла PKCS #12:
## openssl pkcs12 -in /etc/pki/tls/private/export.p12 -out /etc/pki/tls/private/server.key -nocerts
-nodes
Enter Import Password: password
MAC verified OK
•
Удалите временный файл PKCS #12:
## rm /etc/pki/tls/private/export.p12
3.
Установите разрешения для /etc/pki/tls/private/server.key файла, чтобы
гарантировать, что только пользователь root может получить доступ к этому
файлу:
## chown root:root /etc/pki/tls/private/server.key
## chmod 0600 /etc/pki/tls/private/server.key
4.
Используйте псевдоним сертификата сервера в базе данных NSS для экспорта
сертификата CA:
## certutil -d /etc/httpd/alias/ -L -n "Example Server Certificate" -a -o /etc/pki/tls/certs/server.crt
Установите разрешения для /etc/pki/tls/certs/server.crt файла, чтобы гарантировать,
что только пользователь root может получить доступ к этому файлу:
## chown root:root /etc/pki/tls/certs/server.crt
## chmod 0600 /etc/pki/tls/certs/server.crt
5.
Используйте псевдоним сертификата CA в базе данных NSS для экспорта
сертификата CA:
## certutil -d /etc/httpd/alias/ -L -n "Example CA" -a -o /etc/pki/tls/certs/ca.crt
6.
Следуйте разделу «Настройка шифрования TLS на HTTP-сервере Apache», чтобы
настроить веб-сервер Apache, и:
255
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
•
Установите для параметра SSLCertificateKeyFile значение /etc/pki/tls/private /
server.key
Установите для параметра SSLCertificateFile значение /etc/pki/tls/certs /
server.crt
Установите для параметра SSLCACertificateFile значение /etc/pki/tls/certs / ca.crt
Дополнительные ресурсы
man httpd(8) — страница руководства для службы httpd, содержащая полный список
ее параметров командной строки. man httpd.service(8) — страница руководства для
файла модуля httpd.service, описывающая, как настроить и улучшить сервис. man
httpd.conf(5) — страница руководства по настройке httpd, описывающая структуру и
расположение файлов конфигурации httpd. man apachectl(8) — страница руководства
для интерфейса управления HTTP-сервером Apache. Сведения о том, как настроить
проверку подлинности Kerberos на HTTP-сервере Apache, см. в разделе
«Использование GSS-прокси для работы Apache httpd». Использование Kerberos - это
альтернативный способ принудительной авторизации клиента на HTTP-сервере
Apache.
Установка и подготовка NGINX (опционально)
NGINX - это высокопроизводительный и модульный сервер, который можно
использовать, например, в качестве:
•
веб-сервера;
•
обратного прокси-сервера;
•
балансировщика нагрузки.
•
В этом разделе описывается, как использовать NGINX в этих сценариях.
SberLinux использует потоки приложений для предоставления различных версий
NGINX. Также в этом разделе описывается, как:
•
выбрать поток и установить NGINX;
•
открыть необходимые порты в межсетевом экране;
•
включить и запустите nginx службу.
Используя конфигурацию по умолчанию, NGINX запускается как веб-сервер на порту
80 и предоставляет содержимое из каталога /usr/share/nginx/html/.
Предварительные условия:
•
•
Установлен SberLinux.
Служба межсетевого экрана включена и запущена.
Процедура:
256
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Отобразите доступные потоки модуля NGINX:
# yum module list nginx
Sberlinux for x86_64 - AppStream (RPMs)
Name
Stream
Profiles
Summary
nginx 1.14 [d] common [d] nginx webserver
nginx 1.16
common [d] nginx webserver
...
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalle
2.
Если необходимо установить поток, отличный от используемого по умолчанию,
выберите поток:
## yum module enable nginx:stream_version
3.
Установите nginx пакет:
## yum install nginx
4.
Откройте порты, на которых NGINX должен предоставлять свои услуги в
межсетевом экране. Например, чтобы открыть порты по умолчанию для HTTP
(порт 80) и HTTPS (порт 443) firewalld, введите:
## firewall-cmd --permanent --add-port={80/tcp,443/tcp}
## firewall-cmd --reload
5.
Включите nginx автоматический запуск службы при загрузке системы:
## systemctl enable nginx
6.
При необходимости запустите nginx службу:
## systemctl start nginx
Если не нужно использовать конфигурацию по умолчанию, пропустите этот шаг и
соответствующим образом настройте NGINX перед запуском службы.
Этапы проверки:
1.
Используйте yum утилиту, чтобы убедиться, что nginx пакет установлен:
257
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## yum list installed nginx
Installed Packages
nginx.x86_64 1:1.14.1-9.module+el8.0.0+4108+af250afe @sberlinux-for-x86_64-appstream-rpms
2.
Убедитесь, что порты, на которых NGINX должен предоставлять свои услуги,
открыты в межсетевом экране:
## firewall-cmd --list-ports
80/tcp 443/tcp
3.
Убедитесь, что nginx служба включена:
## systemctl is-enabled nginx
enabled
Настройка NGINX в качестве веб-сервера, предоставляющего разный контент для
разных доменов.
По умолчанию NGINX действует как веб-сервер, который предоставляет клиентам
одинаковый контент для всех доменных имен, связанных с IP-адресами сервера. Эта
процедура объясняет, как настроить NGINX:
для обслуживания запросов в example.ru домен с содержимым из /var/www/example.ru/
каталога; для обслуживания запросов в example.net домен с содержимым из
/var/www/example.net/ каталога; для обслуживания всех других запросов, например, на
IP-адрес сервера или на другие домены, связанные с IP-адресом сервера, с содержимым
из /usr/share/nginx/html/ каталога.
Предварительные условия:
•
•
Клиенты и веб-сервер разрешают example.ru и example.net домен к IP-адресу
веб-сервера.
Обратите внимание, что необходимо вручную добавить эти записи на свой
DNS-сервер.
Процедура:
1.
•
Отредактируйте файл /etc/nginx/nginx.conf:
По умолчанию файл /etc/nginx/nginx.conf уже содержит всеобъемлющую
конфигурацию. Если удалили эту часть из конфигурации, повторно добавьте
следующий серверный блок в http-блок в файле /etc/nginx/nginx.conf:
server {
258
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root
/usr/share/nginx/html;
}
Эти параметры настраивают следующее:
•
Директива listen определяет, какие IP-адреса и порты прослушивает служба. В
этом случае NGINX прослушивает порт 80 как по всем адресам IPv4, так и по
IPv6. Параметр default_server указывает, что NGINX использует этот
серверный блок по умолчанию для запросов, соответствующих IP-адресам и
портам.
•
Параметр server_name определяет имена хостов, за которые отвечает этот
серверный блок. Установка имя_сервера в _ настраивает NGINX на принятие
любого имени хоста для этого серверного блока.
•
Директива root задает путь к веб-контенту для этого серверного блока.
•
Добавьте аналогичный серверный блок для example.ru домен в http-блок:
server {
server_name example.ru;
root
/var/www/example.ru/;
access_log /var/log/nginx/example.ru/access.log;
error_log /var/log/nginx/example.ru/error.log;
}
•
•
Директива access_log определяет отдельный файл журнала доступа для этого
домена.
Директива error_log определяет отдельный файл журнала ошибок для этого
домена. Добавьте аналогичный серверный блок для example.net домен к httpблоку:
server {
server_name example.net;
root
/var/www/example.net/;
access_log /var/log/nginx/example.net/access.log;
error_log /var/log/nginx/example.net/error.log;
}
2.
•
Создайте корневые каталоги для обоих доменов:
mkdir -p /var/www/example.ru/
259
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
3.
mkdir -p /var/www/example.net/
Установите контекст httpd_sys_content_t для обоих корневых каталогов:
# semanage fcontext -a -t httpd_sys_content_t "/var/www/example.ru(/.*)?"
# restorecon -Rv /var/www/example.ru/
# semanage fcontext -a -t httpd_sys_content_t "/var/www/example.net(/.\*)?"
# restorecon -Rv /var/www/example.net/
Эти команды устанавливают контекст httpd_sys_content_t в каталогах
/var/www/example.ru/ и /var/www/example.net/.
Обратите внимание, что для выполнения команд restorecon необходимо установить
пакет policycoreutils-python-utils.
4.
•
•
5.
Создайте каталоги журналов для обоих доменов:
mkdir /var/log/nginx/example.ru/
mkdir /var/log/nginx/example.net/
Перезапустите nginx службу:
## systemctl restart nginx
Этапы проверки:
1.
Создайте другой файл примера в корне документа каждого виртуального хоста:
## echo "Content for example.ru" /var/www/example.ru/index.html
## echo "Content for example.net" /var/www/example.net/index.html
## echo "Catch All content" /usr/share/nginx/html/index.html
2.
В любом браузере подключитесь к http://example.ru. Веб-сервер показывает
пример содержимого из /var/www/example.ru/index.html файла.
3.
В любом браузере подключитесь к http://example.net. Веб-сервер показывает
пример содержимого из /var/www/example.net/index.html файла.
4.
В любом браузере подключитесь к http://IP_address_of_the_server. Веб-сервер
показывает пример содержимого из /usr/share/nginx/html/index.html файла.
Добавление шифрования TLS на веб-сервер NGINX
В этом разделе описывается, как включить шифрование TLS на веб-сервере NGINX для
example.ru домен.
Предварительные условия:
•
Закрытый ключ хранится в файле /etc/pki/tls/private/example.ru.key.
260
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
•
•
Сертификат TLS хранится в файле /etc/pki/tls/certs/example.ru.crt. Если
используете другой путь, адаптируйте соответствующие шаги процедуры.
Сертификат CA был добавлен к файлу сертификата TLS сервера.
Клиенты и веб-сервер преобразуют имя хоста сервера в IP-адрес веб-сервера.
Порт 443 открыт в локальном межсетевом экране.
Для получения подробной информации о создании закрытого ключа и запроса на
подписание сертификата (CSR), а также о том, как запросить сертификат у центра
сертификации (CA).
Процедура:
1.
Отредактируйте файл / etc/nginx/nginx.conf и добавьте следующий серверный
блок к http-блоку в конфигурации:
server {
listen
443 ssl;
server_name
example.ru;
root
/usr/share/nginx/html;
ssl_certificate /etc/pki/tls/certs/example.ru.crt;
ssl_certificate_key /etc/pki/tls/private/example.ru.key;
}
2.
По соображениям безопасности настройте, чтобы только пользователь root
мог получить доступ к файлу закрытого ключа:
## chown root:root /etc/pki/tls/private/example.ru.key
## chmod 600 /etc/pki/tls/private/example.ru.key
Предупреждение: Если к закрытому ключу получили доступ неавторизованные
пользователи, отмените сертификат, создайте новый закрытый ключ и запросите
новый сертификат. В противном случае соединение TLS больше не является
безопасным.
3.
Перезапустите nginx службу:
## systemctl restart nginx
Этапы проверки:
Используйте браузер и подключитесь к https://example.ru.
261
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Настройка NGINX в качестве обратного прокси для HTTP-трафика
Можно настроить веб-сервер NGINX так, чтобы он действовал как обратный
прокси-сервер для HTTP-трафика. Например, можно использовать эту
функциональность для пересылки запросов в определенный подкаталог на удаленном
сервере. С точки зрения клиента, клиент загружает контент с хоста, к которому он
обращается. Однако NGINX загружает фактическое содержимое с удаленного сервера
и пересылает его клиенту.
Эта процедура объясняет, как перенаправить трафик в каталог /example на вебсервере по URL https://example.ru.
Предварительные условия:
При необходимости шифрование TLS включено на обратном прокси-сервере.
Процедура:
1.
Отредактируйте файл /etc/nginx/nginx.conf и добавьте следующие настройки в
серверный блок, который должен обеспечивать обратный прокси:
location /example {
proxy_pass https://example.ru;
}
Блок location определяет, что NGINX передает все запросы в каталоге /example в
https://example.ru.
2.
Установите для логического параметра httpd_can_network_connect SELinux
значение 1, чтобы SELinux позволил NGINX пересылку трафика:
## setsebool -P httpd_can_network_connect 1
3.
Перезапустите службу nginx:
## systemctl restart nginx
Этапы проверки:
Используйте браузер и подключитесь к http://host_name/example, где отобразится
содержание https://example.ru
Настройка NGINX в качестве балансировщика нагрузки HTTP
Можно использовать функцию обратного прокси-сервера NGINX для балансировки
нагрузки на трафик. Эта процедура описывает, как настроить NGINX в качестве
262
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
балансировщика нагрузки HTTP, который отправляет запросы на разные серверы,
основываясь на том, какой из них имеет наименьшее количество активных
подключений. Если оба сервера недоступны, процедура также определяет третий
хост по причинам резервного копирования.
Предварительные условия:
NGINX установлен.
Процедура:
1.
Отредактируйте файл /etc/nginx/nginx.conf и добавьте следующие настройки:
http {
upstream backend {
least_conn;
server server1.example.ru;
server server2.example.ru;
server server3.example.ru backup;
}
server {
location / {
proxy_pass http://backend;
}
}
}
Директива least_conn в группе хостов с именем backend определяет, что NGINX
отправляет запросы на server1.example.ru или server2.example.ru, в зависимости от
того, какой хост имеет наименьшее количество активных подключений. NGINX
использует server3.example.ru только в качестве резервной копии на случай, если два
других хоста недоступны.
С директивой proxy_pass, установленной на http://backend, NGINX действует как
обратный прокси-сервер и использует серверную группу хостов для распределения
запросов на основе настроек этой группы.
Вместо метода балансировки нагрузки least_conn можно указать:
•
•
отсутствие способа использовать циклический перебор и равномерно
распределять запросы по серверам;
ip_hash для отправки запросов с одного клиентского адреса на один и тот же
сервер на основе хеша, вычисленного из первых трех октетов IPv4-адреса или
всего IPv6-адреса клиента;
263
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
2.
хеш для определения сервера на основе пользовательского ключа, который
может быть строкой, переменной или комбинацией того и другого.
Согласованный параметр настраивает, что NGINX распределяет запросы по
всем серверам на основе определенного пользователем значения хешированного
ключа.
случайные отправки запросов на случайно выбранный сервер.
Перезапустите службу nginx:
## systemctl restart nginx
Использование samba в качестве сервера (опционально)
samba реализует протокол Server Message Block (SMB) в SberLinux. Протокол SMB
используется для доступа к ресурсам на сервере, таким как общие папки с файлами и
общие принтеры. Кроме того, Samba реализует протокол удаленного вызова
процедур распределенной вычислительной среды (DCE RPC), используемый Microsoft
Windows.
Можно запустить samba как:
•
•
•
член домена с интеграцией в Active Directory (AD) или NT4;
автономный сервер;
основной контроллер домена NT4 (PDC) или резервный контроллер домена (BDC).
Примечание: SberLinux поддерживает режимы PDC и BDC только в существующих
установках с версиями Windows, которые поддерживают домены NT4. SberLinux
рекомендует не настраивать новый домен samba NT4, поскольку операционные
системы Microsoft, более поздние, чем Windows 7 и Windows Server 2008 R2, не
поддерживают домены NT4.
SberLinux не поддерживает запуск samba в качестве контроллера домена AD (DC).
Независимо от режима установки, можно дополнительно предоставлять общий
доступ к каталогам и принтерам. Это позволяет samba выступать в качестве
файлового сервера и сервера печати.
Понимание различных сервисов и режимов samba
В этом разделе описываются различные службы, включенные в samba, и различные
режимы, которые можно настроить.
Сервисы samba
samba предоставляет следующие услуги:
smbd
264
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Эта служба предоставляет услуги обмена файлами и печати с использованием
протокола SMB. Кроме того, служба отвечает за блокировку ресурсов и
аутентификацию подключающихся пользователей. Для аутентификации участников
домена smbd требуется winbindd. Служба smb systemd запускает и останавливает
демон smbd.
Чтобы использовать службу smbd, установите пакет samba.
nmbd
Эта служба предоставляет имя хоста и разрешение IP-адреса с использованием
протокола для работы в локальных сетях NetBIOS по протоколу IPv4. В дополнение к
разрешению имен служба nmbd позволяет просматривать сеть SMB для поиска
доменов, рабочих групп, хостов, общих файловых ресурсов и принтеров. Для этого
служба либо сообщает эту информацию непосредственно широковещательному
клиенту, либо пересылает ее в локальный или главный браузер. Служба nmb systemd
запускает и останавливает демон nmbd.
Обратите внимание, что современные SMB-сети используют DNS для разрешения
клиентов и IP-адресов. Для Kerberos требуется рабочая настройка DNS.
Чтобы воспользоваться сервисом nmbd, установите пакет samba.
winbindd
Эта служба предоставляет интерфейс для коммутатора службы имен (NSS) для
использования пользователей и групп домена AD или NT4 в локальной системе. Это
позволяет, например, пользователям домена проходить аутентификацию в службах,
размещенных на сервере samba, или в других локальных службах. Служба winbind
systemd запускает и останавливает демон winbindd.
Если samba настроена в качестве участника домена, winbindd должен быть запущен
перед службой smbd. В противном случае пользователи и группы домена будут
недоступны для локальной системы.
Чтобы использовать службу winbindd, установите пакет samba-winbind.
Службы безопасности samba. Сценарии, когда службы samba** и клиентские утилиты
samba загружают и перезагружают свою конфигурацию**
Параметр безопасности в разделе [global] в файле /etc/samba/smb.conf управляет
тем, как samba проверяет подлинность пользователей, подключающихся к сервису. В
зависимости от режима, в котором устанавливается samba, для параметра должны
быть установлены разные значения:
Для участника домена AD установите security = ads (тип реализации уровня
пользователя)
В этом режиме samba использует Kerberos для аутентификации пользователей AD.
265
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Дополнительные сведения о настройке samba в качестве участника домена см. в
разделе «Настройка samba в качестве сервера-участника домена AD».
На автономном сервере установите security = user (тип реализации уровня
пользователя)
В этом режиме samba использует локальную базу данных для аутентификации
подключающихся пользователей.
Дополнительные сведения о настройке samba в качестве автономного сервера см. в
разделе Настройка samba в качестве автономного сервера.
На PDC NT4 или BDC установите security = user (тип реализации уровня пользователя)
В этом режиме samba проверяет подлинность пользователей в локальной базе
данных или базе данных LDAP.
Для участника домена NT4 установите security = domain (тип реализации уровня
пользователя)
В этом режиме samba проверяет подлинность подключения пользователей к NT4 PDC
или BDC. Нет возможности использовать этот режим для участников домена AD.
Дополнительные сведения о настройке samba в качестве участника домена см. в
разделе Настройка Samba в качестве сервера-участника домена AD.
Безопасное редактирование конфигурации samba
Ниже описано, когда службы и утилиты samba загружают и перезагружают свою
конфигурацию:
•
•
Службы samba перезагружают свою конфигурацию:
– Автоматически каждые 3 минуты.
– По запросу вручную, например, при запуске команды smbcontrol all reloadconfig.
Клиентские утилиты samba считывают свою конфигурацию только при их
запуске.
Обратите внимание, что для вступления в силу определенных параметров, таких как
безопасность, простой перезагрузки недостаточно - требуется перезапуск smb
службы.
Проверка конфигурации samba
Службы samba автоматически перезагружают свою конфигурацию каждые 3 минуты.
Эта процедура описывает, как отредактировать конфигурацию samba таким
образом, чтобы службы не загружали изменения повторно до того, как проверится
конфигурация с помощью testparm утилиты.
266
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Предварительные условия:
samba установлена.
Процедура:
1.
Создайте копию файла /etc/samba/smb.conf:
## cp /etc/samba/smb.conf /etc/samba/samba.conf.copy
2.
Отредактируйте скопированный файл и внесите нужные изменения.
3.
Проверьте конфигурацию в файле /etc/samba/samba.conf.copy:
## testparm -s /etc/samba/samba.conf.copy
Если testparm сообщает об ошибках, исправьте их и запустите команду снова.
4.
Переопределите файл /etc/samba/smb.conf новой конфигурацией:
## mv /etc/samba/samba.conf.copy /etc/samba/smb.conf
5.
Подождите, пока службы samba автоматически перезагрузят свою
конфигурацию, или вручную перезагрузите конфигурацию:
## smbcontrol all reload-config
Проверка файла smb.conf с помощью утилиты testparm
Утилита testparm проверяет правильность конфигурации samba в файле
/etc/samba/smb.conf. Утилита обнаруживает недопустимые параметры и значения, а
также неправильные настройки, например, для сопоставления идентификаторов.
Если testparm сообщает об отсутствии проблем, службы samba успешно загрузят
файл /etc/samba/smb.conf. Обратите внимание, что testparm не может проверить,
что настроенные службы будут доступны или будут работать должным образом.
Примечание: Рекомендуем проверять файл /etc/samba/smb.conf с помощью testparm
после каждой модификации этого файла.
Предварительные условия:
•
•
samba установлена.
Файл /etc/samba/smb.conf завершает работу.
Процедура:
267
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Запустите утилиту testparm от имени пользователя root:
## testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Unknown parameter encountered: "log levell"
Processing section "[example_share]"
Loaded services file OK.
ERROR: The idmap range for the domain * (tdb) overlaps with the range of DOMAIN (ad)!
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions
## Global parameters
[global]
...
[example_share]
...
В выводе предыдущего примера сообщается о несуществующем параметре и неверной
конфигурации сопоставления идентификаторов.
2.
Если testparm сообщает о неправильных параметрах, значениях или других
ошибках в конфигурации, устраните проблему и запустите утилиту снова.
Настройка samba как отдельного сервера
Можно настроить samba как сервер, который не является членом домена. В этом
режиме установки samba аутентифицирует пользователей в локальной базе данных,
а не в центральном контроллере домена. Кроме того, можно включить гостевой
доступ, чтобы пользователи могли подключаться к одной или нескольким службам
без проверки подлинности.
Настройка конфигурации сервера для автономного сервера
В этом разделе описывается, как настроить конфигурацию сервера для автономного
сервера samba.
Процедура:
1.
Установите пакет samba:
## yum install samba
268
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
2.
Отредактируйте файл /etc/samba/smb.conf и задайте следующие параметры:
[global]
workgroup = Example-WG
netbios name = Server
security = user
log file = /var/log/samba/%m.log
log level = 1
Эта конфигурация определяет автономный сервер с именем Server в рабочей группе
Example-WG. Кроме того, эта конфигурация позволяет вести журнал на минимальном
уровне (1), а файлы журнала будут храниться в каталоге /var/log/samba/. samba
расширит макрос %m в параметре файла журнала до имени NetBIOS подключающихся
клиентов. Это позволяет создавать индивидуальные файлы журналов для каждого
клиента.
3.
При необходимости настройте общий доступ к файлам или принтерам.
4.
Проверьте файл /etc/samba/smb.conf:
## testparm
5.
Если настроены общие ресурсы, требующие проверки подлинности, создайте
учетные записи пользователей.
6.
Откройте необходимые порты и перезагрузите конфигурацию межсетевого
экрана с помощью утилиты firewall-cmd:
## firewall-cmd --permanent --add-service=samba
## firewall-cmd --reload
7.
Включите и запустите smb службу:
## systemctl enable --now smb
Создание и включение локальных учетных записей пользователей
Чтобы разрешить пользователям проходить аутентификацию при подключении к
общему ресурсу, необходимо создать учетные записи на хосте samba как в
операционной системе, так и в базе данных samba. samba требует учетной записи
операционной системы для проверки списков управления доступом (ACL) к объектам
269
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
файловой системы и учетной записи samba для аутентификации подключающихся
пользователей.
Если используется параметр passdb backend = tdbsam по умолчанию, samba хранит
учетные записи пользователей в базе данных /var/lib/samba/private/passdb.tdb.
Процедура в этом разделе описывает, как создать локального пользователя samba с
именем example.
Предварительные условия:
samba установлен и настроен как автономный сервер.
Процедура:
1.
Создайте учетную запись операционной системы:
## useradd -M -s /sbin/nologin example
Эта команда добавляет пример учетной записи без создания домашнего каталога.
Если учетная запись используется только для аутентификации в samba, назначьте
команду /sbin/nologin в качестве командной строки, чтобы предотвратить
локальный вход учетной записи.
2.
Установите пароль для учетной записи операционной системы, чтобы
включить его:
## passwd example
Enter new UNIX password: password
Retype new UNIX password: password
passwd: password updated successfully
samba не использует пароль, установленный в учетной записи операционной
системы, для аутентификации. Однако необходимо установить пароль для
включения учетной записи. Если учетная запись отключена, samba отказывает в
доступе, если этот пользователь подключается.
3.
Добавьте пользователя в базу данных samba и установите пароль для учетной
записи:
## smbpasswd -a example
New SMB password: password
Retype new SMB password: password
Added user example.
270
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Используйте этот пароль для аутентификации при использовании этой учетной
записи для подключения к общему ресурсу samba.
4.
Включите учетную запись samba:
## smbpasswd -e example
Enabled user example.
Понимание и настройка сопоставления samba ID
Домены Windows различают пользователей и группы по уникальным
идентификаторам безопасности (SID). Однако Linux требует уникальных
идентификаторов UID и GID для каждого пользователя и группы. Если запущена samba
как участник домена, служба winbindd отвечает за предоставление операционной
системе информации о пользователях и группах домена.
Чтобы служба winbindd предоставляла уникальные идентификаторы для
пользователей и групп в Linux, необходимо настроить сопоставление
идентификаторов в файле /etc/samba/smb.conf для:
•
•
•
локальной базы данных (домен по умолчанию);
домена AD или NT4, членом которого является сервер samba;
каждого доверенного домена, из которого пользователи должны иметь доступ к
ресурсам на этом сервере samba.
samba представляет различные интерфейсы сопоставления идентификаторов для
конкретных конфигураций. Наиболее часто используемыми являются следующие (см.
таблицу ниже):
Back end
Use case
tdb
Thedefault domain only
ad
AD domains only
rid
AD and NT4 domains
autorid
AD, NT4, and thedefault domain
Планирование диапазонов идентификаторов samba
Независимо от того, сохраняется ли UID и GID для Linux в AD или настраивается
samba для их генерации, для каждой конфигурации домена требуется уникальный
диапазон идентификаторов, который не должен перекрываться ни с одним из других
доменов.
Предупреждение: Если будут установлены перекрывающиеся диапазоны
идентификаторов, samba не сможет работать корректно. Можно назначить только
271
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
один диапазон для каждого домена. Поэтому оставьте достаточно места между
диапазонами доменов. Это позволяет расширить диапазон позже, если домен
увеличится. Если позже домену будет назначен другой диапазон, права
собственности на файлы и каталоги, ранее созданные этими пользователями и
группами, будут потеряны.
•
Домен по умолчанию
В доменной среде можно добавлять одну конфигурацию сопоставления
идентификаторов для каждого из следующих:
•
•
Домен, членом которого является сервер samba.
Каждый доверенный домен, который должен иметь доступ к серверу samba.
Однако для всех остальных объектов samba присваивает идентификаторы из домена
по умолчанию. Это включает в себя:
•
•
Локальных пользователей и группы samba.
Встроенные учетные записи и группы samba, такие как BUILTIN\Administrators
Примечание: необходимо настроить домен по умолчанию, как описано в этом
разделе, чтобы Samba работала правильно.
Серверная часть домена по умолчанию должна быть доступна для записи, чтобы
постоянно сохранять назначенные идентификаторы.
Для домена по умолчанию можно использовать один из следующих внутренних
интерфейсов:
tdb
При настройке домена по умолчанию для использования серверной части tdb задайте
диапазон идентификаторов, достаточно большой, чтобы включать объекты,
которые будут созданы в будущем и не будут являться частью сопоставления
идентификаторов домена.
Например, установите следующее в разделе [global] в файле /etc/samba/smb.conf:
idmap config * : backend = tdb
idmap config * : range = 10000-999999
autorid
Когда настраивается домен по умолчанию для использования серверной части
autorid, добавление дополнительных идентификаторов для доменов необязательно.
Например, установите следующее в разделе [global] в файле /etc/samba/smb.conf:
272
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
idmap config * : backend = autorid
idmap config * : range = 10000-999999
Использование серверной части отображения идентификатора tdb
Служба winbindd по умолчанию использует серверную часть сопоставления
идентификаторов tdb с возможностью записи для хранения таблиц
идентификаторов безопасности (SID), UID и GID. Сюда входят локальные
пользователи, группы и встроенные участники.
Используйте этот серверный интерфейс только для домена * по умолчанию.
Например:
idmap config * : backend = tdb
idmap config * : range = 10000-999999
Использование серверной части сопоставления идентификатора объявления
В этом разделе описывается, как настроить участника samba AD для использования
серверной части сопоставления идентификаторов объявлений.
Серверная часть ad ID mapping реализует API, доступный только для чтения, для
считывания информации об учетной записи и группе из AD. Это обеспечивает
следующие преимущества:
•
•
•
Кроме того, все настройки пользователей и групп хранятся централизованно.
Идентификаторы пользователей и групп согласованы на всех серверах samba,
которые используют этот серверный интерфейс.
Идентификаторы не хранятся в локальной базе данных, которая может быть
повреждена, и поэтому права собственности на файлы не могут быть
потеряны.
Примечание: Серверная часть сопоставления идентификаторов ad не поддерживает
домены Active Directory с односторонним доверием. Если идет настройка участника
домена в Active Directory с односторонним доверием, используйте вместо этого один
из следующих интерфейсов сопоставления идентификаторов: tdb, rid или autorid.
Серверная часть ad считывает из AD следующие атрибуты (см. таблицу ниже):
D имя атрибута
Тип объекта
Соответствует
sAMAccountName
User and group
User or group name, depending on the
object
uidNumber
User
User ID (UID)
273
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
D имя атрибута
Тип объекта
Соответствует
gidNumber
Group
Group ID (GID)
loginShell [a]
User
Path to the shell of the user
unixHomeDirectory [b]
User
Path to the home directory of the user
primaryGroupID [c]
User
Primary group ID
[a] loginShell - оболочка входа samba, samba считывает этот атрибут только в том
случае, если задан ДОМЕН конфигурации idmap:unix_nss_info = yes. [b]
unixHomeDirectory - оболочка входа в samba [c] primaryGroupID - samba считывает
этот атрибут только в том случае, если установлен домен конфигурации
idmap:unix_primary_group = yes.
Предварительные условия:
•
•
Как пользователи, так и группы должны иметь уникальные идентификаторы,
установленные в AD, и идентификаторы должны находиться в пределах
диапазона, настроенного в файле /etc/samba/smb.conf. Объекты,
идентификаторы которых находятся за пределами диапазона, не будут
доступны на сервере Samba.
Пользователи и группы должны иметь все необходимые атрибуты,
установленные в AD. Если требуемые атрибуты отсутствуют, пользователь
или группа не будут доступны на сервере Samba. Требуемые атрибуты зависят
от конфигурации.
Предварительные условия:
•
•
Установлена samba.
Конфигурация samba, за исключением сопоставления идентификаторов,
существует в файле /etc/samba/smb.conf.
Процедура:
1.
•
Отредактируйте раздел [global] в файле /etc/samba/smb.conf:
Добавьте конфигурацию сопоставления идентификаторов для домена по
умолчанию *, если он не существует. Например:
idmap config * : backend = tdb
idmap config * : range = 10000-999999
•
Включите серверную часть сопоставления идентификаторов объявлений для
домена AD:
idmap config DOMAIN : backend = ad
274
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
Задайте диапазон идентификаторов, назначаемых пользователям и группам в
домене AD. Например:
idmap config DOMAIN : range = 2000000-2999999
Примечание: Диапазон не должен перекрываться с какой-либо другой конфигурацией
домена на этом сервере. Кроме того, диапазон должен быть установлен достаточно
большим, чтобы включать все идентификаторы, назначенные в будущем.
•
Задайте значение, чтобы samba использовала схему RFC 2307 при чтении
атрибутов из AD:
idmap config DOMAIN : schema_mode = rfc2307
•
Чтобы разрешить samba считывать оболочку входа в систему и путь к
домашнему каталогу пользователей из соответствующего атрибута AD,
установите:
idmap config DOMAIN : unix_nss_info = yes
В качестве альтернативы можно задать единый для всего домена путь к домашнему
каталогу и оболочку входа, которая применяется ко всем пользователям. Например:
template shell = /bin/bash
template homedir = /home/%U
•
По умолчанию samba использует primaryGroupID атрибут объекта user в
качестве основной группы пользователя в Linux. В качестве альтернативы
можно настроить samba на использование значения, установленного в
атрибуте gidNumber, вместо этого:
idmap config DOMAIN : unix_primary_group = yes
2.
Проверьте /etc/samba/smb.conf файл:
## testparm
3.
Перезагрузите конфигурацию samba:
## smbcontrol all reload-config
275
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Использование серверной части сопоставления идентификаторов rid
В этом разделе описывается, как настроить участника домена samba для
использования серверной части сопоставления идентификаторов rid.
samba может использовать относительный идентификатор (RID) SID Windows для
создания идентификатора в SberLinux.
Примечание: RID - это последняя часть SID. Например, если SID пользователя равен S1-5-21-5421822485-1151247151-421485315-30014, тогда 30014 - это
соответствующий RID.
Серверная часть сопоставления идентификаторов rid реализует API, доступный
только для чтения, для вычисления информации об учетной записи и группе на основе
алгоритмической схемы сопоставления для доменов AD и NT4. Когда идет настройка
серверной части, необходимо установить самый низкий и самый высокий RID в idmap
config DOMAIN : range параметре. samba не будет сопоставлять пользователей или
группы с более низким или более высоким RID, чем задано в этом параметре.
Примечание: Как серверная часть, доступная только для чтения, rid не может
назначать новые идентификаторы, например, для встроенных групп. Поэтому не
используйте этот серверный интерфейс для домена * по умолчанию.
Преимущества использования серверной части rid
•
•
Все пользователи и группы домена, у которых есть RID в пределах
настроенного диапазона, автоматически доступны для участника домена.
Не нужно вручную назначать идентификаторы, домашние каталоги и оболочки
входа.
Недостатки использования серверной части rid
•
•
•
•
Всем пользователям домена назначается одна и та же оболочка входа и
домашний каталог. Однако можно использовать переменные.
Идентификаторы пользователей и групп одинаковы для всех членов домена
samba, только если все они используют серверную часть rid с одинаковыми
настройками диапазона идентификаторов.
Не получится исключить доступность отдельных пользователей или групп для
участника домена. Исключаются только пользователи и группы за пределами
настроенного диапазона.
Основываясь на формулах, которые служба winbindd использует для вычисления
идентификаторов, повторяющиеся идентификаторы могут возникать в
многодоменных средах, если объекты в разных доменах имеют одинаковый RID.
Предварительные условия:
•
samba установлена.
276
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
Конфигурация samba, за исключением сопоставления идентификаторов,
существует в файле /etc/samba/smb.conf.
Процедура:
1.
•
Отредактируйте раздел [global] в файле /etc/samba/smb.conf:
Добавьте конфигурацию сопоставления идентификаторов для домена по
умолчанию *, если он не существует. Например:
idmap config * : backend = tdb
idmap config * : range = 10000-999999
•
Включите серверную часть сопоставления идентификаторов rid для домена:
idmap config DOMAIN : backend = rid
•
Установите диапазон, который достаточно велик, чтобы включить все RID,
назначенные в будущем. Например:
idmap config DOMAIN : range = 2000000-2999999
samba игнорирует пользователей и группы, чьи RID в этом домене не входят в
диапазон.
Примечание: Диапазон не должен перекрываться с какой-либо другой конфигурацией
домена на этом сервере. Кроме того, диапазон должен быть установлен достаточно
большим, чтобы включать все идентификаторы, назначенные в будущем.
Дополнительные сведения см. в разделе «Планирование диапазонов
идентификаторов samba».
•
Задайте оболочку и путь к домашнему каталогу, которые будут назначены всем
подключенным пользователям. Например:
template shell = /bin/bash
template homedir = /home/%U
2.
Проверьте файл /etc/samba/smb.conf:
## testparm
3.
Перезагрузите конфигурацию samba:
## smbcontrol all reload-config
277
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Использование серверной части сопоставления идентификаторов autorid
В этом разделе описывается, как настроить участника домена samba для
использования серверной части autorid сопоставления идентификаторов.
Серверная часть autorid работает аналогично серверной части rid сопоставления
идентификаторов, но может автоматически назначать идентификаторы для разных
доменов. Это позволяет использовать autorid серверную часть в следующих
ситуациях:
•
•
•
Только для домена по умолчанию.
Для домена по умолчанию и дополнительных доменов, без необходимости
создавать конфигурации сопоставления идентификаторов для каждого из
дополнительных доменов.
Только для определенных доменов.
Примечание: Если используется autorid для домена по умолчанию, добавление
дополнительной конфигурации сопоставления идентификаторов для доменов
необязательно.
Преимущества использования серверной части autorid
•
•
•
Все пользователи и группы домена, чьи вычисленные UID и GID находятся в
пределах настроенного диапазона, автоматически доступны для участника
домена.
Не нужно вручную назначать идентификаторы, домашние каталоги и оболочки
входа.
Никаких повторяющихся идентификаторов, даже если несколько объектов в
многодоменной среде имеют один и тот же RID.
Недостатки использования серверной части autorid
•
•
•
Идентификаторы пользователей и групп не совпадают у всех членов домена
samba.
Всем пользователям домена назначается одинаковая оболочка входа и
домашний каталог. Однако можно использовать переменные.
Не получится исключить доступность отдельных пользователей или групп в
члене домена. Исключаются только пользователи и группы, вычисляемый UID
или GID которых находится за пределами настроенного диапазона.
Предварительные условия:
samba установлена.
Конфигурация samba, за исключением сопоставления идентификаторов, существует
в файле /etc/samba/smb.conf.
Процедура:
278
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
•
Отредактируйте [global]раздел в файле /etc/samba/smb.conf:
Включите серверную часть autorid сопоставления идентификаторов * для
домена по умолчанию:
idmap config * : backend = autorid
•
Задайте диапазон, который достаточно велик, чтобы назначить
идентификаторы для всех существующих и будущих объектов. Например:
idmap config * : range = 10000-999999
samba игнорирует пользователей и группы, чьи вычисляемые идентификаторы в этом
домене не входят в диапазон.
Предупреждение: После того, как установлен диапазон и samba начнет его
использовать, можно увеличить только верхний предел диапазона. Любое другое
изменение диапазона может привести к назначению новых идентификаторов и к
потере прав собственности на файлы.
•
При необходимости задайте размер диапазона. Например:
idmap config * : rangesize = 200000
samba присваивает это количество непрерывных идентификаторов для каждого
объекта домена до тех пор, пока не будут приняты все идентификаторы из
диапазона, заданного в idmap config * : range параметре.
Примечание: Если установлен размер диапазона, необходимо соответствующим
образом адаптировать диапазон. Диапазон должен быть кратен размеру диапазона.
•
Задайте оболочку и путь к домашнему каталогу, которые будут назначены всем
сопоставленным пользователям. Например:
template shell = /bin/bash
template homedir = /home/%U
При необходимости добавьте дополнительную конфигурацию сопоставления
идентификаторов для доменов. Если конфигурация для отдельного домена
недоступна, samba вычисляет идентификатор, используя внутренние настройки
autorid в ранее настроенном *домене по умолчанию.
2.
Проверьте файл /etc/samba/smb.conf:
## testparm
279
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
3.
Перезагрузите конфигурацию samba:
## smbcontrol all reload-config
Настройка samba в качестве рядового сервера домена AD
Если используется домен AD или NT4, используйте samba для добавления сервера
SberLinux в качестве участника домена, чтобы получить следующее:
•
•
•
Доступ к ресурсам домена на других членах домена.
Аутентификация пользователей домена в локальных службах, таких как sshd.
Общий доступ к каталогам и принтерам, размещенным на сервере, для работы
в качестве сервера файлов и печати.
Присоединение системы SberLinux к домену AD
samba Winbind - это альтернатива демону служб безопасности системы (SSSD) для
подключения системы SberLinux к Active Directory (AD). В этом разделе описывается,
как подключить систему SberLinux к домену AD с помощью realmd для настройки
samba Winbind.
Процедура:
1.
Если для AD требуется устаревший тип шифрования RC4 для аутентификации
Kerberos, включите поддержку этих шифров в SberLinux:
## update-crypto-policies --set DEFAULT:AD-SUPPORT
2.
Установите следующие пакеты:
## yum install realmd oddjob-mkhomedir oddjob samba-winbind-clients \samba-winbind sambacommon-tools samba-winbind-krb5-locator
3.
Чтобы предоставить общий доступ к каталогам или принтерам на члене
домена, установите samba пакет:
## yum install samba
4.
Создайте резервную копию существующего файла конфигурации Samba
/etc/samba/smb.conf Samba:
## mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
280
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
5.
Подключитесь к домену. Например, чтобы присоединиться к домену с именем
ad.example.ru:
## realm join --membership-software=samba --client-software=winbind ad.example.ru
Используя предыдущую команду, утилита realm автоматически совершает
следующие процедуры:
•
•
•
6.
7.
Добавляет модуль winbind для поиска пользователей и групп в файл
/etc/nsswitch.conf;
Обновляет файлы конфигурации подключаемого модуля аутентификации (PAM)
в каталоге /etc/pam.d/;
Запускает службу winbind и позволяет службе запускаться при загрузке
системы.
При необходимости задайте альтернативный серверный интерфейс
сопоставления идентификаторов или индивидуальные параметры
сопоставления идентификаторов в файле /etc/samba/smb.conf.
Убедитесь, что служба winbind запущена:
**# systemctl status winbind**
...
Active: active (running) since Tue 2018-11-06 19:10:40 CET; 15s ago
Примечание: Чтобы разрешить samba запрашивать информацию о пользователях
домена и группах, перед запуском smb должна быть запущена служба winbind.
8.
Если установлен пакет samba для совместного использования каталогов и
принтеров, включите и запустите службу smb:
## systemctl enable --now smb
При необходимости, если проверяется подлинность локальных учетных записей в
Active Directory, включите подключаемый модуль winbind_krb5_localauth.
Этапы проверки:
1.
Отобразите сведения о пользователе рекламы, например учетную запись
администратора рекламы в домене рекламы:
## getent passwd "AD\administrator"
AD\administrator:*:10000:10000::/home/administrator@AD:/bin/bash
2.
Запросите членов группы пользователей домена в домене AD:
281
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## getent group "AD\Domain Users"
AD\domain users:x:10000:user1,user2
3.
При необходимости убедитесь, что можно использовать пользователей и
группы домена при настройке разрешений для файлов и каталогов. Например,
чтобы установить владельца /srv/samba/example.txt файл в AD\administrator и
группу в AD\Domain Users:
## chown "AD\administrator":"AD\Domain Users" /srv/samba/example.txt
4.
•
Убедитесь, что проверка подлинности Kerberos работает должным образом:
На части домена AD получите тикет на AD:/bin/bash:
## kinit [email protected]
•
Отобразите кешированный тикет Kerberos:
## klist
Ticket cache: KCM:0
Default principal: [email protected]
Valid starting Expires
Service principal
01.11.2018 10:00:00 01.11.2018 20:00:00 krbtgt/[email protected]
renew until 08.11.2018 05:00:00
5.
Отобразите доступные домены:
## wbinfo --all-domains
BUILTIN
SAMBA-SERVER
AD
Использование подключаемого модуля локальной авторизации для MIT Kerberos
Служба winbind предоставляет пользователям Active Directory доступ к члену домена.
В определенных ситуациях администраторы хотят разрешить пользователям
домена проходить аутентификацию в локальных службах, таких как SSH-сервер,
которые запущены на члене домена. При использовании Kerberos для аутентификации
пользователей домена включите подключаемый модуль winbind_krb5_localauth для
корректного сопоставления участников Kerberos с учетными записями Active Directory
через службу winbind.
282
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Например, если для атрибута sAMAccountName пользователя Active Directory
установлено значение EXAMPLE и пользователь пытается войти в систему с именем
пользователя в нижнем регистре, Kerberos возвращает имя пользователя в верхнем
регистре. Как следствие, записи не совпадают, и аутентификация завершается
ошибкой.
Используя подключаемый модуль winbind_krb5_localauth, имена учетных записей
отображаются правильно. Обратите внимание, что это относится только к
аутентификации GSSAPI, а не к получению первоначального тикета,
предоставляющего тикет (TGT).
Предварительные условия:
•
•
•
samba настроен как член Active Directory.
SberLinux проверяет подлинность попыток входа в систему с помощью Active
Directory.
Служба winbind запущена.
Процедура:
Отредактируйте файл /etc/krb5.conf и добавьте следующий раздел:
[plugins]
localauth = {
module = winbind:/usr/lib64/samba/krb5/winbind_krb5_localauth.so
enable_only = winbind
}
Включение типа шифрования AES в Active Directory с помощью объекта групповой
политики
В этом разделе описывается, как включить тип шифрования AES в Active Directory
(AD) с помощью объекта групповой политики (GPO). Для некоторых функций SberLinux,
таких, как запуск сервера samba на клиенте IdM, требуется этот тип шифрования.
Предварительные условия:
•
•
Получен AD пользователь, который может редактировать групповые политики.
Установлена консоль управления групповой политикой.
Процедура:
1.
Откройте консоль управления групповой политикой.
2.
Нажмите правой кнопкой мыши политику домена по умолчанию и выберите
Изменить. Откроется редактор управления групповой политикой.
283
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
3.
Перейдите в раздел Конфигурация компьютера → Политики → Настройки
Windows → Параметры безопасности → Локальные политики → Параметры
безопасности.
4.
Дважды нажмите Сетевая безопасность: где настройте типы шифрования,
разрешенные для политики Kerberos.
5.
Выберите AES256_HMAC_SHA1 и, при необходимости, выберите будущие типы
шифрования.
6.
Нажмите кнопку ОК.
7.
Закройте редактор управления групповой политикой.
8.
Повторите действия для политики контроллера домена по умолчанию.
9.
Подождите, пока контроллеры домена Windows (DC) автоматически не
применят групповую политику. В качестве альтернативы, чтобы применить
объект групповой политики вручную к контроллеру домена, введите следующую
команду, используя учетную запись с правами администратора:
C:\ gpupdate /force /target:computer
Настройка общего файлового ресурса samba, использующего списки управления
доступом POSIX
Как служба Linux, samba поддерживает общие ресурсы с ACL POSIX. Они позволяют
управлять разрешениями локально на сервере samba с помощью утилит, таких как
chmod. Если общий ресурс хранится в файловой системе, поддерживающей
расширенные атрибуты, можно определить списки управления доступом для
нескольких пользователей и групп.
Добавление общего ресурса, использующего списки контроля доступа POSIX
В этом разделе описывается, как создать общий ресурс с именем example, который
предоставляет содержимое каталога /srv/samba/example/ и использует списки
управления доступом POSIX.
Предварительные условия:
samba была настроена в одном из следующих режимов, как:
•
•
Автономный сервер;
Член домена.
Процедура:
1.
Создайте папку, если она не существует. Например:
284
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## mkdir -p /srv/samba/example/
2.
Если необходимо запустить SELinux в принудительном режиме, установите
контекст samba_share_t в каталоге:
## semanage fcontext -a -t samba_share_t "/srv/samba/example(/.*)?"
## restorecon -Rv /srv/samba/example/
3.
Установите списки управления доступом файловой системы в каталоге.
4.
Добавьте пример общего доступа в файл /etc/samba/smb.conf. Например, чтобы
добавить общий ресурс с поддержкой записи:
[example]
path = /srv/samba/example/
read only = no
Примечание: Независимо от списков управления доступом файловой системы; если не
установите значение read only = no, samba совместно использует каталог в режиме
только для чтения.
5.
Проверьте файл /etc/samba/smb.conf:
## testparm
6.
Откройте необходимые порты и перезагрузите конфигурацию межсетевого
экрана с помощью утилиты firewall-cmd:
## firewall-cmd --permanent --add-service=samba
## firewall-cmd --reload
7.
Перезапустите службу smb:
## systemctl restart smb
Настройка стандартных списков ACL Linux для общего ресурса samba, использующего
списки ACL POSIX
Стандартные списки управления доступом в Linux поддерживают настройку
разрешений для одного владельца, одной группы и для всех других неопределенных
пользователей. Можно использовать утилиты chown, chgrp и chmod для обновления
285
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
списков управления доступом. Если требуется точный контроль, то используйте
более сложные списки управления доступом POSIX.
Следующая процедура устанавливает владельца каталога /srv/samba/example/
пользователем root, предоставляет права на чтение и запись группе пользователей
домена и запрещает доступ всем остальным пользователям.
Предварительные условия:
Общий ресурс samba, для которого необходимо установить списки управления
доступом, существует.
Процедура:
## chown root:"Domain Users" /srv/samba/example/
## chmod 2770 /srv/samba/example/
Примечание: Включение бита set-group-ID (SGID) в каталоге автоматически
устанавливает группу по умолчанию для всех новых файлов и подкаталогов на группу
каталога, вместо обычного поведения, когда она устанавливается в основную группу
пользователя, создавшего новую запись каталога.
Настройка расширенных списков контроля доступа для общего ресурса samba,
использующего списки контроля доступа POSIX
Если файловая система, в которой хранится общий каталог, поддерживает
расширенные списки управления доступом, можно использовать их для установки
сложных разрешений. Расширенные списки управления доступом могут содержать
разрешения для нескольких пользователей и групп.
Расширенные списки управления доступом POSIX позволяют настраивать сложные
списки управления доступом для нескольких пользователей и групп. Однако можно
установить только следующие разрешения:
•
•
•
•
Нет доступа;
Доступ на чтение;
Доступ на запись;
Полный контроль.
Если требуются детализированные разрешения Windows, такие, как создание
папки/добавление данных, настройте общий ресурс на использование списков
управления доступом Windows. Смотрите раздел Настройка общего ресурса,
использующего списки управления доступом Windows.
Следующая процедура показывает, как включить расширенные списки управления
доступом для общего ресурса. Кроме того, он содержит пример настройки
расширенных списков управления доступом.
286
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Предварительные условия:
Общий ресурс samba, для которого можно установить списки управления доступом,
существует.
Процедура:
1.
Включите следующий параметр в разделе общего ресурса в файле
/etc/samba/smb.conf, чтобы включить наследование расширенных списков
управления доступом:
inherit acls = yes
2.
Перезапустите smb службу:
## systemctl restart smb
3.
Установите списки управления доступом в каталоге. Например:
Пример. Настройка расширенных списков управления доступом
Следующая процедура устанавливает разрешения на чтение, запись и выполнение для
группы администраторов домена, разрешения на чтение и выполнение для группы
пользователей домена и запрещает доступ всем остальным в каталоге
/srv/samba/example/:
•
Отключите автоматическое предоставление разрешений основной группе
учетных записей пользователей:
## setfacl -m group::--- /srv/samba/example/
## setfacl -m default:group::--- /srv/samba/example/
Основная группа каталога дополнительно сопоставляется с основной группой
динамического СОЗДАТЕЛЯ. Когда используете расширенные списки управления
доступом POSIX на общем ресурсе samba, этот участник добавляется
автоматически, и его не получится удалить.
1.
•
Установите разрешения для каталога:
Предоставьте разрешения на чтение, запись и выполнение группе
администраторов домена:
## setfacl -m group:"DOMAIN\Domain Admins":rwx /srv/samba/example/
•
Предоставьте разрешения на чтение и выполнение группе пользователей
домена:
287
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## setfacl -m group:"DOMAIN\Domain Users":r-x /srv/samba/example/
•
Установите разрешения для другой записи ACL, чтобы запретить доступ
пользователям, которые не соответствуют другим записям ACL:
## setfacl -R -m other::--- /srv/samba/example/
Эти настройки применимы только к этому каталогу. В Windows эти списки
управления доступом отображаются в режиме только для этой папки.
2.
Чтобы разрешить наследование разрешений, установленных на предыдущем
шаге, новыми объектами файловой системы, созданными в этом каталоге:
## setfacl -m default:group:"DOMAIN\Domain Admins":rwx /srv/samba/example/
## setfacl -m default:group:"DOMAIN\Domain Users":r-x /srv/samba/example/
## setfacl -m default:other::--- /srv/samba/example/
С этими настройками режим только для этой папки для участников установлен для
этой папки, вложенных папок и файлов.
samba сопоставляет разрешения, установленные в процедуре, со следующими
списками управления доступом Windows (см.таблицу ниже):
Основные разрешения
Доступ
Применяется к
Domain\Domain Admins
Full control
This folder, subfolders и files
Domain\Domain Users
Read & execute
This folder, subfolders и files
Everyone [a]
None
This folder, subfolders и files
owner (Unix User\owner) [b]
Full control
This folder only
primary_group (Unix User\primary_group)
[c]
None
This folder only
CREATOR OWNER [d] [e]
Full control
Subfolders и files only
CREATOR GROUP [f] [g]
None
Subfolders и files only
[a] samba сопоставляет разрешения для этого участника с другой записью ACL.
[b] samba сопоставляет владельца каталога с этой записью.
[c] samba сопоставляет основную группу каталога с этой записью.
[d] Для новых объектов файловой системы создатель автоматически наследует
разрешения этого участника.
288
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
[e] Пакет samba с владельцем acl creator, настраивающим или удаляющим этих
участников из списков управления доступом, которые не поддерживаются на общих
ресурсах, использующих списки управления доступом POSIX.
[f] Создатель и владелец acl samba win.
[g] Для новых объектов файловой системы основная группа создателя
автоматически наследует разрешения этого участника.
Установка разрешений для общего ресурса, использующего списки управления
доступом POSIX
При желании, чтобы ограничить или предоставить доступ к общему ресурсу samba,
можно установить определенные параметры в разделе общего ресурса в файле
/etc/samba/smb.conf.
Примечание: Разрешения на основе общего доступа определяют, может ли
пользователь, группа или хост получить доступ к общему ресурсу. Эти настройки не
влияют на списки управления доступом файловой системы.
Используйте настройки на основе общих ресурсов для ограничения доступа к общим
ресурсам, например, для запрета доступа с определенных хостов.
Предварительные условия:
Был настроен общий доступ к спискам управления доступом POSIX.
Настройка доступа к общему ресурсу на основе пользователей и групп
Управление доступом на основе пользователей и групп позволяет предоставлять или
запрещать доступ к общему ресурсу определенным пользователям и группам.
Предварительные условия:
Общий ресурс samba, для которого можно установить пользовательский или
групповой доступ, существует.
Процедура:
1.
Например, чтобы разрешить всем членам группы пользователей домена доступ
к общему ресурсу, в то время как доступ запрещен для учетной записи
пользователя, добавьте следующие параметры в конфигурацию общего ресурса:
valid users = +DOMAIN\"Domain Users"
invalid users = DOMAIN\user
Параметр недопустимых пользователей имеет более высокий приоритет, чем
параметр допустимых пользователей. Например, если учетная запись пользователя
289
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
является членом группы пользователей домена, доступ к этой учетной записи
запрещен при использовании предыдущего примера.
2.
Перезагрузите конфигурацию samba:
## smbcontrol all reload-config
Настройка доступа к общему ресурсу на основе хоста
Управление доступом на основе хоста позволяет предоставлять или запрещать
доступ к общему ресурсу на основе имен хостов клиента, IP-адресов или диапазона
IP-адресов.
Следующая процедура объясняет, как включить IP-адрес 127.0.0.1, диапазон IPадресов 192.0.2.0/24 и client1.example.ru хоста для доступа к общему ресурсу и
дополнительно запретить доступ для client2.example.ru хоста:
Предварительные условия:
Общий ресурс samba, для которого можно установить доступ на основе хоста,
существует.
Процедура:
1.
Добавьте следующие параметры в конфигурацию общего ресурса в файле
/etc/samba/smb.conf:
hosts allow = 127.0.0.1 192.0.2.0/24 client1.example.ru
hosts deny = client2.example.ru
Параметр hosts deny имеет более высокий приоритет, чем hosts allow. Например,
если client1.example.ru разрешает IP-адрес, указанный в параметре hosts allow,
доступ с этого хоста запрещен.
2.
Перезагрузите конфигурацию samba:
## smbcontrol all reload-config
Настройка общего ресурса, использующего списки управления доступом Windows
samba поддерживает настройку списков управления доступом Windows для общих
ресурсов и объектов файловой системы. Это позволяет:
•
•
Использовать детализированные списки управления доступом Windows.
Управлять разрешениями на общий доступ и списками управления доступом
файловой системы с помощью Windows.
290
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
В качестве альтернативы - настроить общий ресурс на использование списков
управления доступом POSIX.
Предоставление привилегии SeDiskOperatorPrivilege
Только пользователи и группы, которым предоставлена привилегия
SeDiskOperatorPrivilege, могут настраивать разрешения для общих ресурсов,
использующих списки управления доступом Windows.
Процедура:
1.
Например, чтобы предоставить привилегию SeDiskOperatorPrivilege группе
DOMAIN\Domain Admins:
## net rpc rights grant "DOMAIN\Domain Admins" SeDiskOperatorPrivilege -U
"DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully granted rights.
Примечание: В доменной среде предоставьте права SeDiskOperatorPrivilege группе
доменов. Это позволяет централизованно управлять привилегиями путем
обновления членства пользователя в группе.
2.
Чтобы перечислить всех пользователей и группы, которым предоставлены
права SeDiskOperatorPrivilege:
# net rpc rights list privileges SeDiskOperatorPrivilege -U "DOMAIN\administrator"
Enter administrator's password:
SeDiskOperatorPrivilege:
BUILTIN\Administrators
DOMAIN\Domain Admins
Включение поддержки Windows ACL
Чтобы настроить общие ресурсы, поддерживающие списки управления доступом
Windows, необходимо включить эту функцию в samba.
Предварительные условия:
Общий пользовательский ресурс настроен на сервере samba.
Процедура:
1.
Чтобы включить его глобально для всех общих ресурсов, добавьте следующие
настройки в раздел [global] файла /etc/samba/smb.conf:
vfs objects = acl_xattr
291
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
map acl inherit = yes
store dos attributes = yes
В качестве альтернативы можно включить поддержку ACL Windows для отдельных
общих ресурсов, добавив вместо этого те же параметры в раздел общего ресурса.
2.
Перезапустите службу smb:
## systemctl restart smb
Добавление общего ресурса, использующего списки управления доступом Windows
В этом разделе описывается, как создать общий ресурс с именем example, который
совместно использует содержимое каталога /srv/samba/example/ и использует списки
управления доступом Windows.
Процедура:
1.
Создайте папку, если она не существует. Например:
## mkdir -p /srv/samba/example/
2.
Если запущен SELinux в принудительном режиме, установите контекст
samba_share_t в каталоге:
## semanage fcontext -a -t samba_share_t "/srv/samba/example(/.*)?"
## restorecon -Rv /srv/samba/example/
3.
Добавьте пример общего доступа в файл /etc/samba/smb.conf. Например,
добавьте общий ресурс с поддержкой записи:
[example]
path = /srv/samba/example/
read only = no
Примечание: Независимо от списков управления доступом файловой системы; если не
установите значение read only = no, samba совместно использует каталог в режиме
только для чтения.
4.
Если не включена поддержка ACL Windows в [global] разделе для всех общих
ресурсов, добавьте следующие параметры в [example] раздел, чтобы включить
эту функцию для этого общего ресурса:
292
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
vfs objects = acl_xattr
map acl inherit = yes
store dos attributes = yes
5.
Проверьте файл /etc/samba/smb.conf:
## testparm
6.
Откройте необходимые порты и перезагрузите конфигурацию межсетевого
экрана с помощьюfirewall-cmd утилиты:
## firewall-cmd --permanent --add-service=samba
## firewall-cmd --reload
7.
Перезапустите службу smb:
## systemctl restart smb
Управление разрешениями общего доступа и ACL файловой системы для общего
ресурса, использующего ACL Windows
Управление разрешениями общего ресурса и списками управления доступом файловой
системы общего ресурса, использующего списки управления доступом Windows Чтобы
управлять разрешениями общего доступа и списками управления доступом к
файловой системе на общем ресурсе samba, использующем списки управления
доступом Windows, используйте приложения Windows, такие, как Управление
компьютером. Дополнительные сведения см. в документации Windows. В качестве
альтернативы используйте утилиту smbcacls для управления списками доступа.
Примечание: Чтобы изменить разрешения файловой системы в Windows, необходимо
использовать учетную запись, которой предоставлена привилегия
SeDiskOperatorPrivilege.
Управление ACL на общем ресурсе SMB с помощью smbcacls
Утилита smbcacls может перечислять, устанавливать и удалять списки управления
доступом для файлов и каталогов, хранящихся на общем ресурсе SMB. Можно
использовать smbcacls для управления ACL файловой системы:
•
•
На локальном или удаленном сервере samba, использующем расширенные списки
управления доступом Windows или POSIX ACL.
В SberLinux для удаленного управления списками доступа к общему ресурсу,
размещенному в Windows.
293
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Записи контроля доступа
Каждая запись ACL объекта файловой системы содержит записи управления
доступом (ACE) в следующем формате:
security_principal:access_right/inheritance_information/permissions
Пример. Записи для контроля доступа
Если у группы пользователей AD\Domain есть разрешения на изменение, которые
применяются к этой папке, вложенным папкам и файлам в Windows, список доступа
содержит следующий ACE:
AD\Domain Users:ALLOWED/OI|CI/CHANGE
ACE содержит следующие части:
Участник безопасности
Участник безопасности - это пользователь, группа или SID, к которым применяются
разрешения в списке управления доступом.
Право доступа
Право доступа определяет доступ к объекту: предоставлен или запрещен.
Значение может быть РАЗРЕШЕНО или ОТКЛОНЕНО.
Информация о наследовании
Осуществляет следующие значения, представленные в таблице ниже:
Таблица. Значения наследования
Описание
Значение
Сопоставляется с
Object Inherit
OI
This folder and files
Container Inherit
CI
This folder and subfolders
Inherit Only
IO
The ACE does not apply to the current file or directory
Inherited
ID
The ACE was inherited from the parent directory
Кроме того, значения могут быть объединены следующим образом, как представлено
в таблице ниже:
Таблица. Комбинации параметров наследования
294
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Комбинации значений
Сопоставления с Windows, котрые применяются к настройке
OI
CI
OI
CI
CI
IO
OI
IO
Это значение может быть либо шестнадцатеричным значением, представляющим
одно или несколько разрешений Windows, либо псевдонимом smbcacls:
Шестнадцатеричное значение, представляющее одно или несколько разрешений
Windows.
В следующей таблице отображаются расширенные разрешения Windows и их
соответствующее значение в шестнадцатеричном формате:
Таблица. Разрешения Windows и соответствующее им значение smbcacls в
шестнадцатеричном формате
Разрешение Windows
Шестнадцатеричное значение
Full control
0x001F01FF
Traverse folder / execute file
0x00100020
List folder / read data
0x00100001
Read attributes
0x00100080
Read extended attributes
0x00100008
Create files / write data
0x00100002
Create folders / append data
0x00100004
Write attributes
0x00100100
Write extended attributes
0x00100010
Delete subfolders and files
0x00100040
Delete
0x00110000
Read permissions
0x00120000
Change permissions
0x00140000
Take ownership
0x00180000
Несколько разрешений могут быть объединены в одно шестнадцатеричное значение с
помощью побитовой операции.
295
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Псевдоним smbcacls. В следующей таблице отображаются доступные псевдонимы:
Таблица. Существующие псевдонимы smbcacls и соответствующие им разрешения
Windows
smbcacls alias
Сопоставление с разрешением Windows
R
Read
READ
Read & execute
W
Special:
* Create files / write data
* Create folders / append data
* Write attributes
* Write extended attributes
* Read permissions
D
Delete
P
Change permissions
O
Take ownership
X
Traverse / execute
CHANGE
Modify
FULL
Full control
Примечание: Можно комбинировать однобуквенные псевдонимы при настройке
разрешений. Например, можно настроить RD на применение разрешения Windows на
чтение и удаление. Однако не получится комбинировать несколько псевдонимов,
состоящих из одной буквы, как и комбинировать псевдонимы и шестнадцатеричные
значения.
Отображение ACL с помощью smbcacls
Чтобы отобразить списки управления доступом на общем ресурсе SMB, используйте
утилиту smbcacls. Если запущен smbcacls без какого-либо параметра операции,
такого как –add, утилита отображает ACL объекта filesystemobject.
Процедура:
Например, чтобы перечислить списки управления доступом корневого каталога
общего ресурса //server/example:
## smbcacls //server/example / -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
REVISION:1
CONTROL:SR|PD|DI|DP
296
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
OWNER:AD\Administrators
GROUP:AD\Domain Users
ACL:AD\Administrator:ALLOWED/OI|CI/FULL
ACL:AD\Domain Users:ALLOWED/OI|CI/CHANGE
ACL:AD\Domain Guests:ALLOWED/OI|CI/0x00100021
Вывод команды отображает:
REVISION: Внутренняя редакция дескриптора безопасности Windows NT ACL
CONTROL
Управление дескриптором безопасности
OWNER
Имя или SID владельца дескриптора безопасности
GROUP
имя или SID группы дескриптора безопасности
ACL. Дополнительные сведения см. в разделе Записи контроля доступа.
Расчет маски ACE
В большинстве ситуаций, когда добавляете или обновляете ACE, используете
псевдонимы smbcacls, перечисленные в существующих псевдонимах smbcacls, и
соответствующие им разрешения Windows.
Однако, если можно установить расширенные разрешения Windows, перечисленные в
разделе Разрешения Windows, и соответствующее им значение smbcacls в
шестнадцатеричном формате, необходимо использовать побитовую операцию ИЛИ
для вычисления правильного значения. Можно использовать следующую команду
командной строки для вычисления значения:
## echo $(printf '0x%X' $(( hex_value_1 | hex_value_2 | ... )))
Добавление, обновление и удаление ACL с помощью smbcacls
В зависимости от параметра, который передаете утилите smbcacls, можно
добавлять, обновлять и удалять списки управления доступом из файла или каталога.
Добавление списка доступа
Чтобы добавить ACL в корень общего ресурса //server/example, который
предоставляет разрешения на изменение для этой папки, вложенных папок и файлов
группе пользователей AD\Domain:
297
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## smbcacls //server/example / -U "DOMAIN\administrator --add ACL:"AD\Domain
Users":ALLOWED/OI|CI/CHANGE
Обновление списка доступа аналогично добавлению нового списка доступа.
Обновите ACL, переопределяя ACL с помощью параметра –modify с помощью
существующего участника безопасности. Если smbcacls находит участника
безопасности в списке ACL, утилита обновляет разрешения. В противном случае
команда завершается с ошибкой:
ACL for SID principal_name not found
Например, чтобы обновить разрешения группы пользователей AD\Domain и
настроить их на чтение для этой папки, вложенных папок и файлов:
## smbcacls //server/example / -U "DOMAIN\administrator --modify ACL:"AD\Domain
Users":ALLOWED/OI|CI/READ
Удаление списка доступа
Чтобы удалить ACL, передайте параметр –delete с точным ACL утилите smbcacls.
Например:
## smbcacls //server/example / -U "DOMAIN\administrator --delete ACL:"AD\Domain
Users":ALLOWED/OI|CI/READ
Разрешение пользователям совместно использовать каталоги на сервере samba
На сервере samba можно настроить, чтобы пользователи могли совместно
использовать каталоги без прав root.
Включение функции обмена пользователями
Прежде чем пользователи смогут совместно использовать каталоги,
администратор должен включить общие ресурсы пользователей в samba.
Например, чтобы разрешить только членам локальной группы примеров создавать
общие ресурсы пользователей.
Процедура:
1.
Создайте локальную группу примеров, если она не существует:
298
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## groupadd example
2.
•
Подготовьте каталог для samba для хранения определений общего доступа
пользователя и правильно установите его разрешения. Например:
Создайте каталог:
## mkdir -p /var/lib/samba/usershares/
•
Установите разрешения на запись для группы примеров:
## chgrp example /var/lib/samba/usershares/
## chmod 1770 /var/lib/samba/usershares/
•
3.
•
Установите фиксированный бит, чтобы запретить пользователям
переименовывать или удалять файлы, хранящиеся другими пользователями в
этом каталоге.
Отредактируйте файл /etc/samba/smb.conf и добавьте следующее в [global]
раздел:
Задайте путь к каталогу, который настроен для хранения определений общего
доступа пользователя. Например:
usershare path = /var/lib/samba/usershares/
•
Установите, сколько пользовательских общих ресурсов samba позволяет
создавать на этом сервере. Например:
usershare max shares = 100
Если используете значение по умолчанию 0 для параметра usershare max shares,
пользовательские общие ресурсы будут отключены.
•
При необходимости задайте список абсолютных путей к каталогам. Например,
чтобы настроить, что samba разрешает общий доступ только к подкаталогам
каталога /dataи /srv, установите:
usershare prefix allow list = /data /srv
Список дополнительных параметров, связанных с общим доступом пользователей,
которые можно установить, см. в разделе USERSHARES на справочной странице
smb.conf(5).
299
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
4.
Проверьте файл /etc/samba/smb.conf:
## testparm
5.
Перезагрузите конфигурацию samba:
## smbcontrol all reload-config
Пользователи могут создавать общие ресурсы пользователей.
Добавление пользовательского ресурса
После того как включена функция общего доступа к пользователям в samba,
пользователи могут предоставлять общий доступ к каталогам на сервере samba без
прав root, выполнив команду net usershare add.
Краткое описание команды добавления общего доступа к сети:
net usershare add share_name path [[ comment ] | [ ACLs ]] [ guest_ok=y|n ]
Примечание: Если установлены списки управления доступом при создании общего
ресурса пользователя, необходимо указать параметр комментария перед списками
управления доступом. Чтобы задать пустой комментарий, используйте пустую
строку в двойных кавычках.
Обратите внимание, что пользователи могут разрешить гостевой доступ только к
общему ресурсу пользователя, если администратор установил usershare allow guests
= yes в разделе [global] в файле /etc/samba/smb.conf.
Отображение информации о существующих общих ресурсах пользователей
Пользователи могут ввести команду net usershare info на сервере samba для
отображения общих ресурсов пользователей и их настроек.
Предварительные условия:
Общий пользовательский ресурс настраивается на сервере samba.
Процедура:
1.
Для отображения всех пользовательских общих ресурсов, созданных любым
пользователем:
$ net usershare info -l
[share_1]
path=/srv/samba/
comment=
300
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
usershare_acl=Everyone:R,host_name\user:F,
guest_ok=y
...
Чтобы перечислить только общие ресурсы, созданные пользователем, выполняющим
команду, опустите параметр -l.
2.
Чтобы отобразить только информацию о конкретных общих ресурсах,
передайте команде название общего ресурса или подстановочные знаки.
Например, для отображения информации об общих ресурсах, имя которых
начинается с share_:
$ net usershare info -l share_
Список общих ресурсов пользователей
Если необходимо перечислить только доступные общие ресурсы пользователей без их
настроек на сервере samba, используйте команду net usershare list.
Предварительные условия:
Общий пользовательский ресурс настраивается на сервере samba.
Процедура:
1.
Чтобы перечислить общие ресурсы, созданные любым пользователем:
$ net usershare list -l
share_1
share_2
...
Чтобы перечислить только общие ресурсы, созданные пользователем, выполняющим
команду, опустите параметр -l.
2.
Чтобы перечислить только определенные общие ресурсы, передайте команде
имя общего ресурса или подстановочные знаки. Например, чтобы перечислить
только общие ресурсы, имя которых начинается с share_:
$ net usershare list -l share_
Удаление пользовательского ресурса
Чтобы удалить общий ресурс пользователя, используйте команду net usershare delete
от имени пользователя, создавшего общий ресурс, или от имени пользователя root.
Предварительные условия:
301
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Общий пользовательский ресурс настроен на сервере samba.
Процедура:
$ net usershare delete share_name
Настройка общего ресурса для разрешения доступа без аутентификации
В определенных ситуациях можно предоставить общий доступ к каталогу, к
которому пользователи могут подключаться без проверки подлинности. Чтобы
настроить это, включите гостевой доступ к общему ресурсу.
Предупреждение: Общие ресурсы, не требующие аутентификации, могут
представлять угрозу безопасности.
Включение гостевого доступа к общему ресурсу
Если на общем ресурсе включен гостевой доступ, samba сопоставляет гостевые
подключения с учетной записью операционной системы, заданной в параметре
гостевой учетной записи. Гостевые пользователи могут получить доступ к файлам
на этом общем ресурсе, если выполняется хотя бы одно из следующих условий:
•
•
Учетная запись указана в списках управления доступом файловой системы.
Разрешения POSIX для других пользователей это позволяют.
Процедура:
1.
•
Отредактируйте файл /etc/samba/smb.conf:
Если это первый гостевой общий ресурс, который настроен на этом сервере:
– Установите для карты значение map to guest = Bad User в [global]
разделе:
[global]
...
map to guest = Bad User
С помощью этого параметра samba отклоняет попытки входа в систему с
использованием неправильного пароля, если только имя пользователя не существует.
Если указанное имя пользователя не существует и гостевой доступ к общему ресурсу
включен, samba рассматривает подключение как гостевой вход.
•
По умолчанию samba сопоставляет учетную запись гостя с учетной записью
nobody в SberLinux. В качестве альтернативы можно создать другую учетную
запись. Например:
302
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
[global]
...
guest account = user_name
Учетная запись, установленная в этом параметре, должна существовать локально
на сервере samba. По соображениям безопасности SberLinux рекомендует
использовать учетную запись, которой не назначена действительная оболочка.
•
Добавьте параметр guest ok = yes в раздел общего доступа [example]:
[example]
...
guest ok = yes
2.
Проверьте файл /etc/samba/smb.conf:
## testparm
3.
Перезагрузите конфигурацию samba:
## smbcontrol all reload-config
Настройка samba для клиентов macOS(опционально)
Модуль samba виртуальной файловой системы fruit (VFS) обеспечивает улучшенную
совместимость с клиентами Apple server message block (SMB).
Оптимизация конфигурации samba для предоставления общего доступа к файлам для
клиентов macOS
В этом разделе описывается, как настроить модуль fruit для всех общих ресурсов
samba, размещенных на сервере, чтобы оптимизировать общие ресурсы samba для
клиентов macOS.
Примечание: Рекомендуется включить модуль fruit глобально. Клиенты, использующие
macOS, согласовывают расширения протокола Apple версии 2 блока сообщений
сервера (SMB2) (AAPL), когда клиент устанавливает первое соединение с сервером.
Если клиент сначала подключается к общему ресурсу без включенных расширений
AAPL, клиент не использует расширения ни для какого общего ресурса сервера.
Предварительные условия:
samba настроен как файловый сервер.
Процедура:
303
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Отредактируйте файл /etc/samba/smb.conf и включите модули fruit и
streams_xattr VFS в разделе [global]:
vfs objects = fruit streams_xattr
Примечание: необходимо включить модуль fruit перед включением streams_xattr.
Модуль fruit использует альтернативные потоки данных (ADS). По этой причине
включите модуль streams_xattr.
2.
Дополнительно, чтобы обеспечить поддержку macOS Time Machine
(используется опционально) в общем ресурсе, добавьте следующий параметр в
конфигурацию общего ресурса в файле /etc/samba/smb.conf:
fruit:time machine = yes
3.
Проверьте файл /etc/samba/smb.conf:
## testparm
4.
Перезагрузите конфигурацию samba:
## smbcontrol all reload-config
Использование утилиты smbclient для доступа к общему ресурсу SMB
Утилита smbclient позволяет получать доступ к общим файлам на сервере SMB
аналогично FTP-клиенту командной строки. Можно использовать его, например, для
загрузки файлов в общий ресурс и из него.
Предварительные условия:
Пакет samba-client установлен.
Как работает интерактивный режим smbclient
Например, для аутентификации в примере общего ресурса, размещенного на сервере,
используя учетную запись DOMAIN\user:
## smbclient -U "DOMAIN\user"
//server/exampleEnter domain\user's password:
Try "help" to get a list of possible commands.smb:
\
304
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
После успешного подключения smbclient к общему ресурсу утилита переходит в
интерактивный режим и отображает следующее приглашение:
smb: \
Чтобы отобразить все доступные команды в интерактивной оболочке, введите:
smb: \ help
Чтобы отобразить справку по конкретной команде, введите:
smb: \ help command_name
Использование smbclient в интерактивном режиме
Если используется smbclient без параметра -c, утилита переходит в интерактивный
режим. Следующая процедура показывает, как подключиться к общему ресурсу SMB и
загрузить файл из подкаталога.
Процедура:
1.
Подключитесь к общему ресурсу:
## smbclient -U "DOMAIN\user_name" //server_name/share_name
2.
Перейдите в каталог /example/:
smb: \ d /example/
3.
Перечислите файлы в каталоге:
smb: \example\ ls
.
D
0 Thu Nov 1 10:00:00 2018
..
D
0 Thu Nov 1 10:00:00 2018
example.txt
N 1048576 Thu Nov 1 10:00:00 2018
9950208 blocks of size 1024. 8247144 blocks available
4.
Скачайте example.txt файл:
smb: \example\ get example.txt
305
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
getting file \directory\subdirectory\example.txt of size 1048576 as example.txt (511975,0
KiloBytes/sec) (average 170666,7 KiloBytes/sec)
5.
Отключитесь от общего доступа:
smb: \example\ exit
Использование smbclient в режиме сценариев
Если передается параметр -c в smbclient, можно автоматически выполнять команды
на удаленном общем ресурсе SMB. Это позволяет использовать smbclient в скриптах.
Следующая процедура показывает, как подключиться к общему ресурсу SMB и
загрузить файл из подкаталога.
Процедура:
Используйте следующую команду для подключения к форме, перейдите в каталог
примеров, загрузите example.txt файл:
## smbclient -U DOMAIN\user_name //server_name/share_name -c "cd /example/ ; get example.txt ;
exit"
Настройка samba в качестве сервера печати
Если настроена samba в качестве сервера печати, клиенты в сети могут
использовать samba для печати. Кроме того, клиенты Windows могут, если они
настроены, загружать драйвер с сервера samba.
Предварительные условия:
samba была настроена в одном из следующих режимов:
•
•
Автономный сервер.
Участник домена.
Служба Samba spoolssd
Samba spoolss - это сервис, который интегрирован в службу smbd. Включите spoolss в
конфигурации samba, чтобы значительно повысить производительность на серверах
печати с большим количеством заданий или принтеров.
Без spoolssd служба samba разветвляет процесс smbd и инициализирует кеш printcap
для каждого задания печати. В случае большого количества принтеров служба smbd
может перестать отвечать на запросы в течение нескольких секунд во время
инициализации кеша. Служба spoolssd позволяет запускать предварительно
разветвленные процессы smbd, которые обрабатывают задания печати без каких306
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
либо задержек. Основной процесс spoolss smbd использует небольшой объем памяти, а
также разветвляет и завершает дочерние процессы.
Следующая процедура объясняет, как включить службу spoolss.
Процедура:
1.
•
Отредактируйте раздел [global] в файле /etc/samba/smb.conf:
Добавьте следующие параметры:
rpc_server:spoolss = external
rpc_daemon:spoolssd = fork
•
При желании можно установить следующие параметры, как в таблице ниже:
Параметр
Значение по умолчанию
Описание
spoolssd:prefork_min_child 5
ren
Minimum number of child processes
spoolssd:prefork_max_chil 25
dren
Maximum number of child processes
spoolssd:prefork_spawn_ra 5
te
Samba forks the number of new child processes set in
this parameter, up to the value set in
spoolssd:prefork_max_children, if a new connection is
established
spoolssd:prefork_max_allo 100
wed_clients
Number of clients, a child process serves
spoolssd:prefork_child_min 60
_life
Minimum lifetime of a child process in seconds. 60
seconds is the minimum.
2.
Проверьте файл /etc/samba/smb.conf:
## testparm
3.
Перезапустите службу smb:
## systemctl restart smb
После перезапуска службы samba автоматически запускает дочерние smbd процессы:
## ps axf
...
30903 smbd
307
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
30912 \_ smbd
30913 \_ smbd
30914 \_ smbd
30915 \_ smbd
...
Включение поддержки сервера печати в samba
В этом разделе объясняется, как включить поддержку сервера печати в samba.
Процедура:
На сервере samba настройте CUPS и добавьте принтер в серверную часть CUPS.
Дополнительные сведения о настройке принтеров в CUPS см. в документации,
предоставленной в веб-консоли CUPS (https://print_server_host_name:631/help) на
сервере печати.
Примечание: samba может пересылать задания печати в CUPS только в том случае,
если CUPS установлен локально на сервере печати samba.
1.
•
Отредактируйте файл /etc/samba/smb.conf:
Если необходимо включить службу spoolssd, добавьте следующие параметры в
раздел [global]:
rpc_server:spoolss = external
rpc_daemon:spoolssd = fork
•
Чтобы настроить серверную часть печати, добавьте раздел [printers]:
[printers]
comment = All Printers
path = /var/tmp/
printable = yes
create mask = 0600
Примечание: Имя общего ресурса [printers] жестко задано и не может быть изменено.
3.
Проверьте файл /etc/samba/smb.conf:
## testparm
4.
Откройте необходимые порты и перезагрузите конфигурацию межсетевого
экрана с помощью утилиты firewall-cmd:
308
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## firewall-cmd --permanent --add-service=samba
## firewall-cmd --reload
5.
Перезапустите службу smb:
## systemctl restart smb
После перезапуска службы samba автоматически предоставляет общий доступ ко
всем принтерам, настроенным в серверной части CUPS. Если необходимо вручную
предоставить общий доступ только к определенным принтерам, см. раздел
Предоставление общего доступа к определенным принтерам вручную.
Общий доступ к определенным принтерам вручную
Если настроена samba в качестве сервера печати, по умолчанию samba
предоставляет общий доступ ко всем принтерам, настроенным в серверной части
CUPS. Следующая процедура объясняет, как предоставить общий доступ только к
определенным принтерам.
Предварительные условия:
Сервер samba настроен как сервер печати
Процедура:
1.
•
Отредактируйте файл /etc/samba/smb.conf:
В разделе [global] отключите автоматический общий доступ к принтеру,
установив:
load printers = no
•
Добавьте раздел для каждого принтера, которым нужно поделиться. Например,
чтобы предоставить общий доступ к принтеру с именем example в серверной
части CUPS в качестве Example-Printer в samba, добавьте следующий раздел:
[Example-Printer]
path = /var/tmp/
printable = yes
printer name = example
Отдельные каталоги для каждого принтера не нужны. Можно задать в параметре
path для принтера тот же каталог буфера обмена, что и в разделе [print$].
2.
Проверьте /etc/samba/smb.conf файл:
309
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## testparm
3.
Перезагрузите конфигурацию samba:
## smbcontrol all reload-config
Настройка автоматической загрузки драйверов принтеров для клиентов Windows на
серверах печати samba
Если используется сервер печати samba для клиентов Windows, можно загрузить
драйверы и предварительно настроить принтеры. Если пользователь подключается
к принтеру, Windows автоматически загружает и устанавливает драйвер локально
на клиенте. Пользователю не требуются права локального администратора для
установки. Кроме того, Windows применяет предварительно настроенные
параметры драйвера, такие как количество лотков.
Предварительные условия:
samba настроен как сервер печати
Основная информация о драйверах принтера
В этом разделе содержится общая информация о драйверах принтера.
Поддерживаемая версия модели драйвера
samba поддерживает только модель драйвера принтера версии 3, которая
поддерживается в Windows 2000 и более поздних версиях, а также в Windows Server
2000 и более поздних версиях. samba не поддерживает модель драйвера версии 4,
представленную в Windows 8 и Windows Server 2012. Однако эти и более поздние
версии Windows также поддерживают драйверы версии 3.
Драйверы с поддержкой пакетов
samba не поддерживает драйверы с поддержкой пакетов.
Подготовка драйвера принтера к загрузке
Прежде чем загрузить драйвер на сервер печати samba:
•
Распакуйте драйвер, если он предоставлен в сжатом формате.
•
Для некоторых драйверов требуется запустить приложение установки,
которое устанавливает драйвер локально на хост Windows. В определенных
ситуациях программа установки извлекает отдельные файлы во временную
папку операционной системы во время выполнения программы установки.
Чтобы использовать файлы драйверов для загрузки:
310
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Запустите программу установки.
2.
Скопируйте файлы из временной папки в новое место.
3.
Отмените установку. Обратитесь к производителю принтера за
драйверами, поддерживающими загрузку на сервер печати.
Предоставление клиенту 32-разрядных и 64-разрядных драйверов для принтера
Чтобы предоставить драйвер для принтера как для 32-разрядных, так и для 64разрядных клиентов Windows, необходимо загрузить драйвер с точно таким же
именем для обеих архитектур. Например, если загружается 32-разрядный драйвер с
именем Example PostScript и 64-разрядный драйвер с именем Example PostScript (v1.0),
имена не совпадают. Следовательно, можно назначить принтеру только один из
драйверов, и драйвер не будет доступен для обеих архитектур.
Предоставление пользователям возможности загружать и предварительно
настраивать драйверы
Чтобы иметь возможность загружать и предварительно настраивать драйверы
принтера, пользователю или группе необходимо предоставить привилегию
SePrintOperatorPrivilege. Пользователь должен быть добавлен в группу
администратора печати. SberLinux автоматически создает эту группу при
установке пакета samba. Администратор печати Группе присваивается самый
низкий доступный динамический системный идентификатор GID, который меньше
1000.
Процедура:
1.
Например, чтобы предоставить привилегию SePrintOperatorPrivilege группе
администраторов печати:
## net rpc rights grant "printadmin" SePrintOperatorPrivilege -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully granted rights.
Примечание: В доменной среде предоставьте SePrintOperatorPrivilegeгруппе доменов.
Это позволяет централизованно управлять привилегиями путем обновления
членства пользователя в группе.
2.
Чтобы перечислить всех пользователей и группы, которым предоставлены
привилегии SePrintOperatorPrivilege, выполните:
## net rpc rights list privileges SePrintOperatorPrivilege -U "DOMAIN\administrator"
Enter administrator's password:
SePrintOperatorPrivilege:
311
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
BUILTIN\Administrators
DOMAIN\printadmin
Настройка общего ресурса print$
Операционные системы Windows загружают драйверы принтера с общего ресурса с
именем print$ с сервера печати. Это имя общего ресурса жестко задано в Windows и
не может быть изменено.
Следующая процедура объясняет, как предоставить общий доступ к каталогу
/var/lib/samba/drivers/ в качестве print$ и разрешить членам локальной группы
printadmin загружать драйверы принтера.
Процедура:
1.
Добавьте раздел [print$] в файл /etc/samba/smb.conf:
[print$]
path = /var/lib/samba/drivers/
read only = no
write list = @printadmin
force group = @printadmin
create mask = 0664
directory mask = 2775
Используйте эти настройки, когда:
•
•
•
•
2.
Только члены группы printadmin могут загружать драйверы принтера в общий
ресурс.
Группе вновь созданных файлов и каталогов будет присвоено значение
printadmin.
Разрешения для новых файлов будут установлены на 664.
Разрешения для новых каталогов будут установлены на 2775.
Чтобы загружать только 64-разрядные драйверы для всех принтеров, включите
этот параметр в раздел [global] в файле /etc/samba/smb.conf:
spoolss: architecture = Windows x64
Без этого параметра Windows отображает только драйверы, для которых загрузили
32-разрядную версию.
3.
Проверьте файл /etc/samba/smb.conf:
## testparm
312
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
4.
Перезагрузите конфигурацию samba
## smbcontrol all reload-config
5.
Создайте группу printadmin, если она не существует:
## groupadd printadmin
6.
Предоставьте группе printadmin привилегию SePrintOperatorPrivilege.
## net rpc rights grant "printadmin"
SePrintOperatorPrivilege
-U "DOMAIN\administrator"Enter DOMAIN\administrator's password:Successfully granted rights.
7.
Если запускаете SELinux в принудительном режиме, установите контекст
samba_share_t в каталоге:
## semanage fcontext -a -t samba_share_t "/var/lib/samba/drivers(/.)?"
## *restorecon -Rv /var/lib/samba/drivers/
8.
•
Установите разрешения для каталога /var/lib/samba/drivers/:
Если используете списки управления доступом POSIX, установите:
## chgrp -R "printadmin" /var/lib/samba/drivers/
## chmod -R 2775 /var/lib/samba/drivers/
•
Если используете списки управления доступом Windows, установите (см.
таблицу ниже):
Основное
Доступ
Применяется к
CREATOR OWNER
Full control
Subfolders and files only
Authenticated Users
Read & execute, List folder contents, Read This folder, subfolders, and files
printadmin
Full control
This folder, subfolders, and files
Дополнительные сведения о настройке списков управления доступом в Windows см. в
документации Windows.
Создание объекта групповой политики, чтобы клиенты могли доверять серверу
печати samba.
По соображениям безопасности последние версии операционных систем Windows
запрещают клиентам загружать драйверы принтера, не зависящие от пакетов, с
313
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
ненадежного сервера. Если сервер печати является участником AD, можно создать
объект групповой политики (GPO) в своем домене, чтобы доверять серверу samba.
Предварительные условия:
•
•
•
Сервер печати samba является членом домена AD.
Под управлением Windows, который используется для создания объекта
групповой политики, должны быть установлены средства администрирования
удаленного сервера Windows (RSAT).
Дополнительные сведения см. в документации Windows.
Процедура:
1.
Войдите в систему с Windows, используя учетную запись, которой разрешено
редактировать групповые политики, например пользователя AD domain
Administrator.
2.
Откройте консоль управления групповой политикой.
3.
Нажмите правой кнопкой мыши на домене AD и выберите Create a GPO in this
domain, and Link it here (Создать объект групповой политики в этом домене и
связать его здесь). samba создаст новый объект групповой политики.
Рисунок. Создание объекта групповой политики в этом домене
4.
Введите имя объекта групповой политики, например, устаревшую политику
драйвера принтера, и нажмите кнопку ОК. Новый объект групповой политики
будет отображаться под записью домена.
5.
Нажмите правой кнопкой мыши на недавно созданном объекте групповой
политики и выберите Edit, чтобы открыть редактор управления групповой
политикой.
6.
Перейдите в раздел Computer Configuration → Policies → Administrative Templates
→ Printers.
314
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
7.
В правой части окна дважды нажмите Point and Print Restriction, чтобы
отредактировать политику:
•
Включите политику и задайте следующие параметры:
– Выберите пользователей, которые могут указывать и печатать только
на эти серверы (Users can only point and print to these servers) и введите
полное доменное имя (FQDN) сервера печати samba в поле рядом с этим
параметром.
– В разделе Security Prompts выберите Do not show warning or elevation
prompt (Не показывать предупреждение или запрос на повышение прав).
– Нажмите кнопку ОК.
Дважды нажмите пункт назначения пакета и серверы, одобренные для печати,
чтобы отредактировать политику:
Включите политику и нажмите кнопку Show (Показать).
Введите полное доменное имя сервера печати samba.
Закройте окно Show Contents и окно свойств политики, нажав кнопку ОК.
Закройте редактор управления групповой политикой Group Policy Management
Editor.
8.
•
•
•
9.
10. Закройте консоль управления групповой политикой Group Policy Management
Console.
После того как участники домена Windows применили групповую политику, драйверы
принтера автоматически загружаются с сервера samba при подключении
пользователя к принтеру.
Загрузка драйверов и предварительная настройка принтеров
Используйте приложение управления печатью на клиенте Windows для загрузки
драйверов и предварительной настройки принтеров, размещенных на сервере печати
samba. Дополнительные сведения см. в документации Windows.
Запуск samba на сервере с включенным режимом FIPS
В этом разделе представлен обзор ограничений запуска samba с включенным режимом
FIPS.
Ограничения использования samba в режиме FIPS
Следующие режимы и функции samba работают в режиме FIPS при указанных условиях:
•
•
samba как член домена только в средах Active Directory (AD) или SberLinux Identity
Management (IdM) с проверкой подлинности Kerberos, использующей шифры AES.
samba в качестве файлового сервера на члене домена Active Directory. Однако
для этого требуется, чтобы клиенты использовали Kerberos для
аутентификации на сервере.
315
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Из-за повышенной безопасности FIPS следующие функции и режимы samba не
работают, если включен режим FIPS:
•
•
•
•
•
•
Аутентификация NT LAN Manager (NTLM), поскольку шифры RC4 заблокированы;
Протокол серверного блока сообщений версии 1 (SMB1);
Режим автономного файлового сервера, поскольку он использует
аутентификацию NTLM;
Контроллеры домена в стиле NT4;
Члены домена в стиле NT4;
Изменение пароля на сервере samba. Можно выполнять изменения пароля
только с помощью Kerberos для контроллера домена Active Directory;
Следующая функция не тестируется в режиме FIPS и, следовательно, не
поддерживается SberLinux:
•
Запуск samba в качестве сервера печати.
Использование samba в режиме FIPS
В этом разделе описывается, как включить режим FIPS на хосте SberLinux, на
котором запущена samba.
Предварительные условия:
•
•
samba настроен на хосте SberLinux.
samba работает в режиме, который поддерживается в режиме FIPS.
Процедура:
1.
Включите режим FIPS на SberLinux:
## fips-mode-setup --enable
2.
Перезагрузите сервер:
## reboot
3.
Используйте утилиту testparm для проверки конфигурации:
## testparm -s
Если команда отображает какие-либо ошибки или несовместимости, исправьте их,
чтобы убедиться, что samba работает правильно.
316
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Настройка производительности сервера samba
В этой главе описывается, какие настройки могут повысить производительность
samba в определенных ситуациях, а какие настройки могут оказать негативное
влияние на производительность.
Предварительные условия:
samba настроен как файловый сервер или сервер печати.
Установка версии протокола SMB
Каждая новая версия SMB добавляет функции и улучшает производительность
протокола. Последние операционные системы Windows и Windows Server всегда
поддерживают последнюю версию протокола. Если samba также использует
последнюю версию протокола, клиенты Windows, подключающиеся к samba,
выигрывают от повышения производительности. В samba значение по умолчанию для
протокола server max установлено на последнюю поддерживаемую стабильную
версию протокола SMB.
Примечание: Чтобы всегда была включена последняя стабильная версия протокола
SMB, не устанавливайте параметр server max protocol. Если параметр задается
вручную, нужно изменять настройку с каждой новой версией протокола SMB, чтобы
была включена последняя версия протокола.
Следующая процедура объясняет, как использовать значение по умолчанию в
параметре протокола server max.
Процедура:
1.
Удалите параметр протокола server max из раздела [global] в файле
/etc/samba/smb.conf.
2.
Перезагрузите конфигурацию samba.
## smbcontrol all reload-config
Настройка общих ресурсов с каталогами, содержащими большое количество файлов
Linux поддерживает имена файлов, чувствительные к регистру. По этой причине
samba необходимо сканировать каталоги на наличие заглавных и строчных имен
файлов при поиске или доступе к файлу. Можно настроить общий ресурс для создания
новых файлов только в нижнем или верхнем регистре, что повышает
производительность.
Предварительные условия:
samba настроен как файловый сервер
317
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Процедура:
1.
Переименуйте все файлы в общей папке в нижний регистр.
Примечание: Используя настройки в этой процедуре, файлы с именами, отличными от
строчных, больше не будут отображаться.
2.
Установите следующие параметры в разделе общего ресурса:
case sensitive = truedefault case = lowerpreserve case = noshort preserve case = no
3.
Проверьте файл /etc/samba/smb.conf:
## testparm
4.
Перезагрузите конфигурацию samba:
## smbcontrol all reload-config
После того как эти настройки применены, имена всех вновь созданных файлов на
этом общем ресурсе будут написаны строчными буквами. Благодаря этим
настройкам samba больше не нужно сканировать каталог на наличие прописных и
строчных букв, что повышает производительность.
Настройки, которые могут негативно сказаться на производительности
По умолчанию ядро в SberLinux настроено на высокую производительность сети.
Например, ядро использует механизм автоматической настройки размеров буфера.
Установка параметра socket options в файле /etc/samba/smb.conf переопределяет эти
настройки ядра. В результате установка этого параметра в большинстве случаев
снижает производительность сети samba.
Чтобы использовать оптимизированные настройки из ядра, удалите параметр
socket options из раздела [global] в /etc/samba/smb.conf.
Настройка samba для совместимости с клиентами, которым требуется версия SMB
ниже версии по умолчанию.
Samba использует разумное и безопасное значение по умолчанию для поддерживаемой
ею версии минимального блока сообщений сервера (SMB).
Установка минимальной версии протокола SMB, поддерживаемой сервером samba
В Samba параметр протокола server min в файле /etc/samba/smb.confопределяет
минимальную версию протокола блока сообщений сервера (SMB), поддерживаемую
сервером samba. В этом разделе описывается, как изменить минимальную версию
протокола SMB.
318
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Предварительные условия:
Samba установлена и настроена.
Процедура:
1.
Отредактируйте файл /etc/samba/smb.conf, добавьте параметр протокола
сервера min и установите для параметра минимальную версию протокола SMB,
которую должен поддерживать сервер. Например, чтобы установить
минимальную версию протокола SMB на SMB3, добавьте:
server min protocol = SMB3
2.
Перезапустите smb службу:
## systemctl restart smb
Часто используемые утилиты командной строки samba
В этой главе описываются часто используемые команды при работе с сервером
samba.
Использование команд net ads join и net rpc join
Используя подкоманду join утилиты net, можно присоединить samba к домену AD или
NT4. Чтобы присоединиться к домену, необходимо вручную создать файл
/etc/samba/smb.conf и при необходимости обновить дополнительные конфигурации,
такие как PAM.
Процедура:
1.
•
Вручную создайте файл /etc/samba/smb.conf со следующими настройками:
Для участника домена AD:
[global]workgroup = domain_namesecurity = adspassdb backend = tdbsamrealm = AD_REALM
•
Для участника домена NT4:
[global]workgroup = domain_namesecurity = userpassdb backend = tdbsam
2.
Добавьте конфигурацию сопоставления идентификаторов для домена * по
умолчанию и для домена, к которому можно присоединиться, в раздел [global] в
/etc/samba/smb.conf файле.
3.
Проверьте файл /etc/samba/smb.conf:
319
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## testparm
4.
•
Присоединитесь к домену в качестве администратора домена:
Чтобы присоединиться к рекламному домену:
## net ads join -U "DOMAIN\administrator"
•
Чтобы присоединиться к домену NT4:
## net rpc join -U "DOMAIN\administrator"
5.
Добавьте источник winbind к записи базы данных passwd и group в
/etc/nsswitch.conf файле:
passwd: files winbind
group: files winbind
6.
Включите и запустите службу winbind:
## systemctl enable --now winbind
7.
При необходимости настройте PAM с помощью утилиты authselect.
8.
При необходимости для сред AD настройте клиент Kerberos.
Использование команды net rpc rights
В Windows можно назначить привилегии учетным записям и группам для выполнения
специальных операций, таких как настройка списков доступа к общему ресурсу или
загрузка драйверов принтера. На сервере samba можно использовать команду net rpc
rights для управления привилегиями.
Список привилегий, которые можно установить
Чтобы перечислить все доступные привилегии и их владельцев, используйте команду
список прав net rpc. Например:
## net rpc rights list -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
SeMachineAccountPrivilege **Add** machines to domain
SeTakeOwnershipPrivilege Take ownership of files or other objects
SeBackupPrivilege Back up files and directories
320
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
SeRestorePrivilege Restore files and directories
SeRemoteShutdownPrivilege Force shutdown from a remote system
SePrintOperatorPrivilege Manage printers
SeAddUsersPrivilege **Add** users and groups to the domain
SeDiskOperatorPrivilege Manage disk shares
SeSecurityPrivilege System security
Предоставление привилегий
Чтобы предоставить привилегии учетной записи или группе, используйте net rpc
rights grant команду.
Например, предоставьте привилегию SePrintOperatorPrivilege группе
DOMAIN\printadmin:
## net rpc rights grant "DOMAIN\printadmin" SePrintOperatorPrivilege -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully granted rights.
Аннулирование привилегий
Чтобы отозвать привилегии у учетной записи или группы, используйте net rpc rights
revoke команду.
Например, чтобы отозвать привилегию SePrintOperatorPrivilege из группы
DOMAIN\printadmin:
## net rpc rights remoke "DOMAIN\printadmin" SePrintOperatorPrivilege -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully revoked rights.
Использование команды net rpc share
Команда net rpc share предоставляет возможность перечислять, добавлять и
удалять общие ресурсы на локальном или удаленном сервере samba или Windows.
Listing shares
Чтобы перечислить общие ресурсы на сервере SMB, используйте команду net rpc share
list (список общих ресурсов). При необходимости передайте параметр -S server_name
команде, чтобы перечислить общие ресурсы удаленного сервера. Например:
## net rpc share list -U "DOMAIN\administrator" -S server_name
Enter DOMAIN\administrator's password:
321
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
IPC$
share_1
share_2
...
Примечание: Общие ресурсы, размещенные на сервере samba, для которых в разделе
/etc/samba/smb.confустановлено значение browseable = no, в выходных данных не
отображаются.
Добавление общего ресурса
Команда добавления общего ресурса net rpc позволяет добавить общий ресурс на
SMB-сервер.
Например, чтобы добавить общий ресурс с именем example на удаленном сервере
Windows, который совместно использует C:\example каталог:
## net rpc share **Add** example="C:\example" -U "DOMAIN\administrator" -S server_name
Примечание: необходимо опустить конечную обратную косую черту в пути при
указании имени каталога Windows.
Чтобы использовать команду для добавления общего ресурса на сервер samba:
Пользователь, указанный в параметре -U, должен иметь привилегию
SeDiskOperatorPrivilege, предоставленную на целевом сервере.
Необходимо написать скрипт, который добавляет раздел общего доступа к файлу
/etc/samba/smb.conf и перезагружает samba. Сценарий должен быть задан в
параметре команды Add share в файле /etc/samba/smb.conf [global] раздела .
Удаление общего ресурса
Команда удаления общего ресурса net rpc позволяет удалить общий ресурс с сервера
SMB.
Например, чтобы удалить общий ресурс с именем example с удаленного сервера
Windows, выполните:
## net rpc share delete example -U "DOMAIN\administrator" -S server_name
Чтобы использовать команду для удаления общего ресурса с сервера samba:
•
Пользователю, указанному в параметре -U, должна быть предоставлена
привилегия SeDiskOperatorPrivilege.
322
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
Должен быть написан скрипт, который удаляет раздел общего ресурса из
файла /etc/samba/smb.conf и перезагружает samba. Сценарий должен быть
установлен в параметре команды удаления общего доступа в файле
/etc/samba/smb.conf [global] раздела.
Использование команды net user
Команда net user позволяет выполнять следующие действия с AD DC или NT4 PDC:
•
•
•
перечисление все учетные записи пользователей;
добавление пользователей;
удаление пользователей.
Примечание: Указание способа подключения, такого как ads для доменов AD или rpc
для доменов NT4, требуется только при перечислении учетных записей
пользователей домена. Другие связанные с пользователем подкоманды могут
автоматически определять метод подключения.
Передайте команде параметр -U user_name, чтобы указать пользователя, которому
разрешено выполнять запрошенное действие.
Список учетных записей пользователей домена
Отобразите список всех пользователей в домене AD:
## net ads user -U "DOMAIN\administrator"
Перечислите всех пользователей в домене NT4:
## net rpc user -U "DOMAIN\administrator"
Добавление учетной записи пользователя в домен
На участнике домена samba можно использовать команду net user add для добавления
учетной записи пользователя в домен.
Например, добавьте учетную запись пользователя в домен.
1.
Добавьте учетную запись:
## net user **Add** user password -U "DOMAIN\administrator"
User user added
2.
При необходимости используйте оболочку удаленного вызова процедур (RPC),
чтобы включить учетную запись в AD DC или NT4 PDC. Например:
323
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## net rpc shell -U DOMAIN\administrator -S DC_or_PDC_name
Talking to domain DOMAIN (S-1-5-21-1424831554-512457234-5642315751)
net rpc user edit disabled user: no Set user's disabled flag from [yes] to [no]
net rpc exit
Удаление учетной записи пользователя из домена
На участнике домена samba можно использовать команду net user delete для удаления
учетной записи пользователя из домена.
Например, чтобы удалить учетную запись пользователя из домена, выполните:
## net user delete user -U "DOMAIN\administrator"
User user deleted
Использование утилиты rpclient
Утилита rpcclient позволяет вручную выполнять функции удаленного вызова
процедур Microsoft на стороне клиента (MS-RPC) на локальном или удаленном сервере
SMB (опционально). Однако большинство функций интегрировано в отдельные
утилиты, предоставляемые samba. Используйте rpcclient только для тестирования
функций MS-PRC.
Предварительные условия:
Пакет samba-client установлен.
Например, можно использовать утилиту rpcclient для управления подсистемой спула
принтера (SPOOLSS).
Пример. Назначение драйвера принтеру
## rpcclient server_name -U "DOMAIN\administrator" -c 'setdriver "printer_name" "driver_name"'
Enter DOMAIN\administrators password:
Successfully set printer_name to driver driver_name.
Использование приложения samba-regedit
Определенные настройки, такие как конфигурации принтера, хранятся в реестре на
сервере samba. Можно использовать приложение samba-regedit на основе ncurses для
редактирования реестра сервера samba.
324
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Рисунок. Приложение samba-regedit на основе ncurses для редактирования реестра
сервера Samba
Предварительные условия:
Пакет samba-client установлен.
Процедура:
Чтобы запустить приложение, введите:
## samba-regedit
Используйте следующие клавиши:
•
•
•
•
Курсор вверх и курсор вниз: Перемещайтесь по дереву реестра и значениям.
Enter: открывает ключ или редактирует значение.
Tab: Переключение между панелью ключей и значений.
Ctrl+C: закрывает приложение.
Использование утилиты smbcontrol
Утилита smbcontrol позволяет отправлять командные сообщения в smbd, nmbd,
winbindd или во все эти службы. Эти управляющие сообщения предписывают службе,
например, перезагрузить свою конфигурацию.
Процедура в этом разделе показывает, как перезагрузить конфигурацию служб smbd,
nmbd, winbindd, отправив сообщение типа reload-config в пункт назначения all.
325
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Предварительные условия:
Установлен samba-common-tools пакет.
Процедура:
## smbcontrol all reload-config
Использование утилиты smbpasswd
Утилита smbpasswd управляет учетными записями пользователей и паролями в
локальной базе данных samba.
Предварительные условия:
Установлен пакет samba-common-tools.
Процедура:
1.
Если запускаете команду от имени пользователя, smbpasswd изменяет пароль
samba пользователя, который запускает команду. Например:
[user@server ~]$ smbpasswd
New SMB password: password
Retype new SMB password: password
2.
•
Если запускаете smbpasswd от имени пользователя root, можно использовать
утилиту, например, для:
создания нового пользователя:
[root@server ~]# smbpasswd -a user_name
New SMB password: password
Retype new SMB password: password
Added user user_name.
Примечание: Прежде чем добавить пользователя в базу данных samba, необходимо
создать учетную запись в локальной операционной системе.
•
включения пользователя samba:
[root@server ~]# smbpasswd -e user_nameEnabled user user_name.
•
отключения пользователя samba:
326
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
[root@server ~]# smbpasswd -x user_nameDisabled user user_name
•
удаления пользователя:
[root@server ~]# smbpasswd -x user_name
Deleted user user_name.
Использование утилиты smbstatus
Утилита smbstatus сообщает:
•
•
•
о подключении по PID каждого демона smbd к серверу samba. Этот отчет
включает имя пользователя, основную группу, версию протокола SMB,
информацию о шифровании и подписи;
о соединении для каждого общего ресурса samba. Этот отчет включает в себя
PID демона smbd, IP-адрес подключающейся машины, временную метку, когда
было установлено соединение, информацию о шифровании и подписи;
о списке заблокированных файлов. Записи отчета содержат дополнительные
сведения, такие как типы оппортунистических блокировок (oplock).
Предварительные условия:
•
•
Пакет samba установлен.
Служба smbd запущена.
Процедура:
## smbstatus
Samba version 4.15.2
PID Username
Group
Machine
Protocol Version Encryption Signing
....-----------------------------------------------------------------------------------------------------------------------963 DOMAIN\administrator DOMAIN\domain users client-pc (ipv4:192.0.2.1:57786) SMB3_02
AES-128-CMAC
Service pid Machine Connected at
Encryption Signing:
....--------------------------------------------------------------------------example 969 192.0.2.1 Thu Nov 1 10:00:00 2018 CEST AES-128-CMAC
Locked files:
Pid Uid DenyMode Access R/W Oplock SharePath
Name Time
....-------------------------------------------------------------------------------------------------------327
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
969 10000 DENY_WRITE 0x120089 RDONLY LEASE(RWH) /srv/samba/example file.txt Thu Nov 1
10:00:00 2018
Использование утилиты smbtar
Утилита smbtar создает резервные копии содержимого общего ресурса SMB или его
подкаталога и сохраняет содержимое в архиве tar. В качестве альтернативы можно
записать содержимое на ленточное устройство.
Предварительные условия:
Пакет samba-client установлен.
Процедура:
Используйте следующую команду для резервного копирования содержимого каталога
demo на //server/example/ share и сохранения содержимого в архиве /root/example.tar:
## smbtar -s server -x example -u user_name -p password -t /root/example.tar
Использование утилиты wbinfo
Утилита wbinfo запрашивает и возвращает информацию, созданную и используемую
winbindd службой.
Предварительные условия:
Установлен пакет samba-winbind-clients.
Процедура:
Можно использовать wbinfo для:
•
списка пользователей домена:
## wbinfo -u
AD\administrator
AD\guest
...
•
списка групп доменов:
## wbinfo -g
AD\domain computers
AD\domain admins
AD\domain users
...
328
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
отображения SID пользователя:
## wbinfo --name-to-sid="AD\administrator"
S-1-5-21-1762709870-351891212-3141221786-500 SID_USER (1)
•
отображения информации о доменах и доверенных лицах:
## wbinfo --trusted-domains --verbose
Domain Name DNS Domain
Trust Type Transitive In Out
BUILTIN
None
Yes
Yes Yes
server
None
Yes
Yes Yes
DOMAIN1 domain1.example.ru None
Yes
Yes Yes
DOMAIN2 domain2.example.ru External No
Yes Yes
Дополнительные ресурсы
Справочная страница: smb.conf(5).
Каталог /usr/share/docs/samba-version/ содержит общую документацию, примеры
сценариев и файлы схемы LDAP, предоставленные проектом samba.
Настройка и управление DNS-сервером BIND
BIND - это многофункциональный DNS-сервер, который полностью соответствует
стандартам DNS Internet Engineering Task Force (IETF) и проектам стандартов.
Например, администраторы часто используют BIND как:
•
•
•
кеширование DNS-сервера в локальной сети;
авторитетный DNS-сервер для зон;
дополнительный сервер для обеспечения высокой доступности зон.
Установка BIND
Чтобы обезопасить установку BIND, проделайте следующее:
•
Запустите именованную службу без изменения корневой среды. В этом случае
SELinux в принудительном режиме предотвращает использование известных
уязвимостей безопасности BIND. По умолчанию SberLinux использует SELinux в
принудительном режиме.
Примечание: Запуск BIND на SberLinux с SELinux в принудительном режиме более
безопасен, чем запуск BIND в среде с измененным root.
•
Запустите службу named-chroot в среде с измененным root.
329
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Используя функцию изменения корневого каталога, администраторы могут
определить, что корневой каталог процесса и его подпроцессов отличается от
каталога /. Когда запускаете службу named-chroot, BIND переключает ее корневой
каталог на /var/named/chroot/. Как следствие, служба использует команды mount –
bind для создания файлов и каталогов, перечисленных в /etc/named-chroot. Файлы
доступны в /var/named/chroot/, и процесс не имеет доступа к файлам за пределами
/var/named/chroot/.
Для использования BIND:
•
•
В обычном режиме используйте именованную службу.
В среде с измененным root используйте службу named-chroot. Для этого
необходимо дополнительно установить пакет named-chroot.
Настройка BIND в качестве кеширующего сервера имен
По умолчанию DNS-сервер BIND разрешает и кеширует успешные и неудачные
запросы. Затем служба отвечает на запросы к тем же записям из своего кеша. Это
значительно повышает скорость поиска в DNS.
Предварительные условия:
IP-адрес сервера является статическим.
Процедура:
1.
Установите bindbind-утилиты и пакеты:
## yum install bind bind-utils
Эти пакеты предоставляют BIND 9.11. Если требуется BIND 9.16, установите
bind9.16bind9.16-utils утилиты и пакеты.
2.
Если необходимо запустить BIND в среде с измененным root, установите bindchroot пакет:
## yum install bind-chroot
Обратите внимание, что запуск BIND на хосте с SELinux в принудительном режиме,
который установлен по умолчанию, является более безопасным.
3.
•
Отредактируйте файл /etc/named.conf и внесите следующие изменения в
options инструкцию:
Обновите инструкции listen-on и listen-on-v6, чтобы указать, какие интерфейсы
IPv4 и IPv6 BIND должны прослушиваться:
330
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
listen-on port 53 { 127.0.0.1; 192.0.2.1; };
listen-on-v6 port 53 { ::1; 2001:db8:1::1; };
•
Обновите инструкцию разрешить запрос, чтобы настроить, с каких IP-адресов
и диапазонов клиенты могут запрашивать этот DNS-сервер:
allow-query { localhost; 192.0.2.0/24; 2001:db8:1::/64; };
•
Добавьте оператор allow-recursion, чтобы определить, с каких IP-адресов и
диапазонов BIND принимает рекурсивные запросы:
allow-recursion { localhost; 192.0.2.0/24; 2001:db8:1::/64; };
Предупреждение: Не разрешайте рекурсию по общедоступным IP-адресам сервера. В
противном случае сервер может стать частью крупномасштабных атак по усилению
DNS.
•
По умолчанию BIND разрешает запросы путем рекурсивного запроса от
корневых серверов к авторитетному DNS-серверу. В качестве альтернативы
можно настроить BIND для пересылки запросов на другие DNS-серверы,
например, установленного провайдера. В этом случае добавьте инструкцию
forwarders со списком IP-адресов DNS-серверов, на которые BIND должен
пересылать запросы:
forwarders { 198.51.100.1; 203.0.113.5; };
В качестве запасного варианта BIND разрешает запросы рекурсивно, если серверы
пересылки не отвечают. Чтобы отключить это поведение, добавьте forward only;
оператор.
4.
Проверьте синтаксис файла /etc/named.conf:
## named-checkconf
Если команда не выводит никаких выходных данных, синтаксис правильный.
5.
Обновите правила межсетевого экрана, чтобы разрешить входящий DNSтрафик:
## firewall-cmd --permanent --add-service=dns# firewall-cmd --reload
331
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
6.
Запустите и включите BIND:
## systemctl enable --now named
Если необходимо запустить BIND в среде с измененным root, используйте команду
systemctl enable –now named-chroot для включения и запуска службы.
Проверка:
1.
Используйте недавно настроенный DNS-сервер для разрешения домена:
## dig @localhost www.example.org
...
www.example.org. 86400 IN A 198.51.100.34
;; Query time: 917 msec
...
В этом примере предполагается, что BIND выполняется на том же хосте и отвечает
на запросы в интерфейсе localhost.
После первого запроса записи BIND добавляет запись в собственный кеш.
2.
Повторите предыдущий запрос:
## dig @localhost www.example.org
...
www.example.org. 85332 IN A 198.51.100.34
;; Query time: 1 msec
...
Из-за кешированной записи дальнейшие запросы к той же записи выполняются
значительно быстрее, пока срок действия записи не истечет.
Следующие шаги:
Настройте клиентов в сети на использование этого DNS-сервера. Если DHCP-сервер
предоставляет клиентам настройки DNS-сервера, соответствующим образом
обновите конфигурацию DHCP-сервера.
Экспорт общих ресурсов NFS
Как системный администратор, можно использовать сервер NFS для совместного
использования каталога в системе по сети.
332
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Введение в NFS
В этом разделе объясняются основные концепции службы NFS.
Сетевая файловая система (NFS) позволяет удаленным хостам монтировать
файловые системы по сети и взаимодействовать с этими файловыми системами так,
как если бы они монтировались локально. Это позволяет консолидировать ресурсы
на централизованных серверах в сети.
Сервер NFS обращается к файлу /etc/exports конфигурации, чтобы определить,
разрешен ли клиенту доступ к любым экспортированным файловым системам. После
проверки все операции с файлами и каталогами доступны пользователю.
Поддерживаемые версии NFS
В этом разделе перечислены версии NFS, поддерживаемые в SberLinux, и их функции.
В настоящее время SberLinux поддерживает следующие основные версии NFS:
•
•
NFS версии 3 (NFSv3) поддерживает безопасную асинхронную запись и более
надежна при обработке ошибок, чем предыдущая NFSv2; она также
поддерживает 64-разрядные размеры файлов и смещения, позволяя клиентам
получать доступ к более чем 2 ГБ файловых данных.
NFS версии 4 (NFSv4) работает через межсетевые экраны и в Интернете,
больше не требует rpcbind службы, поддерживает списки управления доступом
(ACL) и использует операции с отслеживанием состояния.
Версия NFS по умолчанию
Версия NFS по умолчанию в SberLinux. Клиенты NFS пытаются подключиться,
используя NFSv4.2 по умолчанию, и возвращаются к NFSv4.1, когда сервер не
поддерживает NFSv4.2. Позже монтирование возвращается к NFSv4.0, а затем к
NFSv3.
Особенности минорных версий NFS
Копия на стороне сервера
Позволяет клиенту NFS эффективно копировать данные, не тратя впустую сетевые
ресурсы, используя системный вызов copy_file_range().
Разреженные файлы
Позволяет файлам иметь одно или несколько отверстий, которые представляют
собой нераспределенные или неинициализированные блоки данных, состоящие только
из нулей. Операция lseek() в NFSv4.2 поддерживает функции seek_hole() и seek_data(),
которые позволяют приложениям отображать местоположение отверстий в
разреженном файле.
333
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Резервирование места
Позволяет серверам хранения резервировать свободное пространство, что
запрещает серверам исчерпывать пространство. NFSv4.2 поддерживает операцию
allocate() для резервирования места, операцию deallocate( для освобождения места и
операцию fallocate() для предварительного выделения или освобождения места в
файле.
Помеченный NFS
Обеспечивает соблюдение прав доступа к данным и позволяет устанавливать метки
SELinux между клиентом и сервером для отдельных файлов в файловой системе NFS.
Улучшения макета
Предоставляет операцию layoutstats(), которая позволяет некоторым параллельным
серверам NFS (pNFS) собирать лучшую статистику производительности.
Ниже приведены особенности NFSv4.1:
•
•
•
Повышает производительность и безопасность сети, а также включает
поддержку PNFS на стороне клиента.
Больше не требуется отдельное TCP-соединение для обратных вызовов, что
позволяет серверу NFS предоставлять делегирование, даже когда он не может
связаться с клиентом: например, при вмешательстве NAT или межсетевого
экрана.
Обеспечивает семантику ровно один раз (за исключением операций
перезагрузки), предотвращая предыдущую проблему, из-за которой некоторые
операции иногда возвращали неточный результат, если ответ был потерян и
операция была отправлена дважды.
Протоколы TCP и UDP в NFSv3 и NFSv4
Для NFSv4 требуется протокол управления передачей (TCP), работающий по IP-сети.
NFSv3 также мог использовать протокол пользовательских дейтаграмм (UDP). В
SberLinux NFS через UDP больше не поддерживается. По умолчанию UDP отключен на
сервере NFS.
Службы, необходимые NFS
В этом разделе перечислены системные службы, необходимые для запуска сервера NFS
или подключения общих ресурсов NFS. SberLinux запускает эти службы
автоматически.
SberLinux использует комбинацию процессов поддержки и обслуживания на уровне
ядра для обеспечения общего доступа к файлам NFS. Все версии NFS полагаются на
удаленные вызовы процедур (RPC) между клиентами и серверами. Для совместного
334
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
использования или монтирования файловых систем NFS следующие службы работают
совместно в зависимости от того, какая версия NFS реализована:
nfsd
Модуль ядра сервера NFS, который обслуживает запросы к общим файловым
системам NFS.
rpcbind
Принимает резервирование портов от местных служб RPC. Затем эти порты
становятся доступными (или рекламируются), чтобы соответствующие удаленные
службы RPC могли получить к ним доступ. Служба rpcbind отвечает на запросы служб
RPC и устанавливает соединения с запрошенной службой RPC. Это не используется с
NFSv4.
rpc.mountd
Этот процесс используется сервером NFS для обработки запросов на подключение
от клиентов NFSv3. Он проверяет, что запрошенный общий ресурс NFS в настоящее
время экспортируется сервером NFS и что клиенту разрешен доступ к нему. Если
запрос на монтирование разрешен, служба nfs-mountd отвечает со статусом
успешного выполнения и предоставляет дескриптор файла для этого общего ресурса
NFS обратно клиенту NFS.
rpc.nfsd
Этот процесс позволяет определить явные версии NFS и протоколы, которые
рекламирует сервер. Он работает с ядром Linux для удовлетворения динамических
требований клиентов NFS, таких, как предоставление серверных потоков при
каждом подключении клиента NFS. Этот процесс соответствует службе nfs-сервера.
lockd
Это поток ядра, который выполняется как на клиентах, так и на серверах. Он
реализует протокол Network Lock Manager (NLM), который позволяет клиентам
NFSv3 блокировать файлы на сервере. Он запускается автоматически при каждом
запуске сервера NFS и при каждом подключении файловой системы NFS.
rpc.statd
Этот процесс реализует протокол RPC Network Status Monitor (NSM), который
уведомляет клиентов NFS о перезапуске сервера NFS без его корректного
отключения. Служба rpc-statd запускается автоматически службой nfs-server и не
требует настройки пользователем. Это не используется с NFSv4.
rpc.rquotad
335
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Этот процесс предоставляет информацию о квотах пользователей для удаленных
пользователей. Служба rpc-rquotad должна быть запущена пользователем при
запуске nfs-сервера.
rpc.idmapd
Этот процесс предоставляет клиентские и серверные вызовы NFSv4, которые
сопоставляют между собой сетевые имена NFSv4 (строки в виде user@domain) и
локальные идентификаторы пользователя и GID. Чтобы idmapd функционировал с
NFSv4, необходимо настроить файл /etc/idmapd.conf. Как минимум, должен быть
указан параметр домена, который определяет домен сопоставления NFSv4. Если
домен сопоставления NFSv4 совпадает с доменным именем DNS, этот параметр
можно пропустить. Клиент и сервер должны согласовать домен сопоставления
NFSv4, чтобы сопоставление идентификаторов функционировало должным образом.
Только сервер NFSv4 использует файл rpc.idmapd, который запускается службой nfsidmapd. Клиент NFSv4 использует утилиту nfsidmap на основе цепочки ключей,
которая вызывается ядром по требованию для выполнения сопоставления
идентификаторов. Если возникает проблема с nfsidmap, клиент возвращается к
использованию rpc.idmapd.
Службы RPC с NFSv4
Протоколы монтажа и блокировки были включены в протокол NFSv4. Сервер также
прослушивает хорошо известный TCP-порт 2049. Таким образом, NFSv4 не нуждается
во взаимодействии со службами rpcbind, lockdи rpc-statd. Служба nfs-mountd попрежнему требуется на сервере NFS для настройки экспорта, но не участвует в
каких-либо операциях по проводам.
Форматы имени хоста NFS
В этом разделе описываются различные форматы, которые можно использовать для
указания хоста при подключении или экспорте общего ресурса NFS.
Можно указать хост в следующих форматах:
Одиночная машина
Любое из следующих:
•
•
•
Полное доменное имя (которое может быть разрешено сервером);
Имя хоста (которое может быть разрешено сервером);
IP-адрес.
IP-сети
Допустим любой из следующих форматов:
336
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
a.b.c.d/z, где a.b.c.d - сеть, а z - количество битов в маске сети; например,
192.168.0.0/24.
a.b.c.d/netmask, где a.b.c.d - сеть, а netmask; например,
192.168.100.8/255.255.255.0.
Сетевые группы
Формат @group-name, где group-name - это имя сетевой группы NIS.
Конфигурация NFS-сервера
В этом разделе описывается синтаксис и параметры двух способов настройки
экспорта на сервере NFS:
•
•
Редактирование файла конфигурации /etc/exports вручную;
Использование утилиты exportfs в командной строке.
Файл конфигурации /etc/exports
Файл /etc/exports управляет тем, какие файловые системы экспортируются на
удаленные хосты, и задает параметры. Он следует следующим правилам синтаксиса:
•
•
•
•
•
•
Пустые строки игнорируются.
Чтобы добавить комментарий, начните строку с хеш-метки (#).
Можно обернуть длинные строки обратной косой чертой ( слеш).
Каждая экспортируемая файловая система должна находиться в отдельной
строке.
Любые списки авторизованных хостов, размещенные после экспортированной
файловой системы, должны быть разделены пробелами.
Параметры для каждого из хостов должны быть заключены в круглые скобки
непосредственно после идентификатора хоста, без каких-либо пробелов,
разделяющих хост и первую круглую скобку.
Экспортный ввод
Каждая запись для экспортируемой файловой системы имеет следующую структуру:
export host(options)
Также возможно указать несколько хостов вместе с конкретными параметрами для
каждого хоста. Для этого перечислите их в той же строке, что и список,
разделенный пробелами, с каждым именем хоста, за которым следуют
соответствующие параметры (в скобках), как в следующем примере:
export host1(options1) host2(options2) host3(options3)
337
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
В этой структуре:
export
Экспортируемый каталог.
host
Параметры хоста или сети, к которым предоставляется общий доступ при
экспорте.
options
Параметры, которые будут использоваться для хоста.
Параметры по умолчанию
Параметрами по умолчанию для экспортной записи являются:
ro
Экспортированная файловая система доступна только для чтения. Удаленные хосты
не могут изменять данные, совместно используемые в файловой системе. Чтобы
разрешить хостам вносить изменения в файловую систему (то есть читать и
записывать), укажите rw параметр.
sync
Сервер NFS не будет отвечать на запросы до тех пор, пока изменения, внесенные
предыдущими запросами, не будут записаны на диск. Чтобы вместо этого включить
асинхронную запись, укажите async параметр.
wdelay
Сервер NFS задержит запись на диск, если заподозрит, что другой запрос на запись
неизбежен. Это может повысить производительность, поскольку уменьшает
количество обращений к диску с помощью отдельных команд записи, тем самым
уменьшая накладные расходы на запись. Чтобы отключить, укажите параметр
no_wdelay, который доступен только в том случае, если также указан параметр
синхронизации по умолчанию.
root_squash
Это не позволяет пользователям root, подключенным удаленно (в отличие от
локальных), иметь привилегии root; вместо этого сервер NFS присваивает им
идентификатор nobody пользователя. Это эффективно “сокращает” полномочия
удаленного пользователя root до самого низкого локального пользователя,
предотвращая возможную несанкционированную запись на удаленный сервер. Чтобы
отключить раздавливание корней, укажите no_root_squash параметр.
338
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Чтобы удалить всех удаленных пользователей (включая root), используйте параметр
all_squash. Чтобы указать идентификаторы пользователя и группы, которые сервер
NFS должен назначить удаленным пользователям с определенного хоста, используйте
параметры anonuid и anongid: (anonuid=uid,anongid=gid). Здесь uidи gid - это
идентификационный номер пользователя и идентификационный номер группы
соответственно. Параметры anonuid и anongidпозволяют создать специальную
учетную запись пользователя и группы для совместного использования удаленными
пользователями NFS.
По умолчанию списки контроля доступа (ACL) поддерживаются NFS в SberLinux.
Чтобы отключить эту функцию, укажите параметр no_acl при экспорте файловой
системы.
Параметры по умолчанию и переопределенные параметры
Каждое значение по умолчанию для каждой экспортируемой файловой системы
должно быть явно переопределено. Например, если параметр rw не указан, то
экспортированная файловая система будет доступна только для чтения. Ниже
приведен пример строки из /etc/exports, которая переопределяет два параметра по
умолчанию:
export host(anonuid=uid,anongid=gid)
В этом примере 192.168.0.3 может монтировать /another/exported/directory/ для
чтения и записи, и все записи на диск являются асинхронными.
Утилита exportfs
Утилита exportfs позволяет пользователю root выборочно экспортировать или не
экспортировать каталоги без перезапуска службы NFS. Когда заданы
соответствующие параметры, утилита exportfs записывает экспортированные
файловые системы в /var/lib/nfs/xtab файле. Поскольку служба nfs-mountd ссылается
на файл xtab при определении прав доступа к файловой системе, изменения в списке
экспортированных файловых систем вступают в силу немедленно.
Общие параметры экспорта файлов
Ниже приведен список часто используемых опций, доступных для exportfs:
-r
Вызывает экспорт всех каталогов, перечисленных в /etc/exports, путем создания
нового списка экспорта в /var/lib/nfs/etab. Этот параметр эффективно обновляет
список экспорта с учетом любых изменений, внесенных в /etc/exports каталог.
-а
339
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Приводит к тому, что все каталоги экспортируются или не экспортируются, в
зависимости от того, какие другие параметры передаются в exportfs. Если другие
параметры не указаны, exportfs экспортирует все файловые системы, указанные в
/etc/exports каталоге.
-o file-systems
Указывает экспортируемые каталоги, которых нет в каталоге /etc/exports. Замените
файловые системы дополнительными файловыми системами, подлежащими экспорту.
Эти файловые системы должны быть отформатированы таким же образом, как они
указаны в /etc/exports каталоге. Этот параметр часто используется для
тестирования экспортированной файловой системы перед ее постоянным
добавлением в список экспортируемых файловых систем.
-i
Игнорирует /etc/exports; для определения экспортируемых файловых систем
используются только параметры, заданные из командной строки.
-u
Не экспортирует все общие каталоги. Команда exportfs -ua приостанавливает общий
доступ к файлам NFS, сохраняя при этом работоспособность всех служб NFS. Чтобы
повторно включить общий доступ к NFS, используйте exportfs -r команду.
-v
Подробная операция, при которой экспортируемые или неэкспортируемые файловые
системы отображаются более подробно при выполнении exportfs команды. Если
утилите exportfs не переданы никакие параметры, она отобразит список
экспортируемых в данный момент файловых систем.
NFS и rpcbind
В этом разделе объясняется назначение службы rpcbind, которая требуется NFSv3.
Служба rpcbind сопоставляет службы удаленного вызова процедур (RPC) с портами,
на которых они прослушиваются. Процессы RPC уведомляют rpcbind при запуске,
регистрируя порты, которые они прослушивают, и номера программ RPC, которые
ожидают обслуживания. Затем клиентская система связывается с rpcbind на сервере
с определенным номером программы RPC. Служба rpcbind перенаправляет клиента на
соответствующий номер порта, чтобы он мог взаимодействовать с запрошенной
службой.
Поскольку службы на основе RPC полагаются на rpcbind для установления всех
соединений с входящими клиентскими запросами, rpcbind должен быть доступен до
запуска любой из этих служб.
340
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Правила контроля доступа для rpcbind влияют на все службы на основе RPC. В
качестве альтернативы можно указать правила управления доступом для каждого из
демонов NFS RPC.
Установка NFS
Эта процедура устанавливает все пакеты, необходимые для монтирования или
экспорта общих ресурсов NFS.
Процедура:
Установите пакет nfs-utils:
## yum install nfs-utils
Запуск NFS-сервера
Эта процедура описывает, как запустить сервер NFS, который необходим для
экспорта общих ресурсов NFS.
Предварительные условия:
•
Для серверов, поддерживающих соединения NFSv3, должна быть запущена
rpcbind служба. Чтобы убедиться, что rpcbind служба активна, используйте
следующую команду:
$ systemctl status rpcbind
•
Если служба остановлена, запустите и включите ее:
$ systemctl enable --now rpcbind
Процедура:
Чтобы запустить сервер NFS и включить его автоматический запуск при загрузке,
используйте следующую команду:
## systemctl enable --now nfs-server
Устранение неполадок NFS и rpcbind
Поскольку служба rpcbind обеспечивает координацию между службами RPC и номерами
портов, используемыми для связи с ними, полезно просматривать состояние текущих
служб RPC с помощью rpcbind при устранении неполадок. Утилита rpcinfo показывает
341
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
каждую службу на основе RPC с номерами портов, номером программы RPC, номером
версии и типом протокола IP (TCP или UDP).
Процедура:
Чтобы убедиться, что для rpcbind службы включены соответствующие службы на
основе NFS RPC, используйте следующую команду:
## rpcinfo -p
Если одна из служб NFS запускается неправильно, rpcbind не сможет сопоставить
запросы RPC от клиентов для этой службы с правильным портом.
2.
Во многих случаях, если NFS отсутствует в выводе rpcinfo службы, перезапуск
NFS приводит к тому, что служба правильно регистрируется в rpcbind и
начинает работать. Поэтому перезапустите rpcbind службу:
## systemctl restart nfs-server
Настройка сервера NFS для работы за межсетевым экраном
Для NFS требуется служба rpcbind, которая динамически назначает порты для служб
RPC и может вызывать проблемы при настройке правил межсетевого экрана. В
следующих разделах описано, как настроить версии NFS для работы за межсетевым
экраном, если необходимо поддерживать:
•
•
NFSv3 Это включает в себя любые серверы, которые поддерживают NFSv3:
– Серверы только для NFSv3;
– Серверы, поддерживающие как NFSv3, так и NFSv4;
NFSv4-only.
Настройка сервера с поддержкой NFSv3 для работы за межсетевым экраном
Следующая процедура описывает, как настроить серверы, поддерживающие NFSv3,
для работы за межсетевым экраном. Сюда входят серверы только для NFSv3 и
серверы, которые поддерживают как NFSv3, так и NFSv4.
Процедура:
1.
Чтобы разрешить клиентам доступ к общим ресурсам NFS за межсетевым
экраном, настройте межсетевой экран, выполнив следующие команды на
сервере NFS:
firewall-cmd --permanent --add-service mountd
342
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
firewall-cmd --permanent --add-service rpc-bind
firewall-cmd --permanent --add-service nfs
2.
Укажите порты, которые будут использоваться службой RPC nlockmgr в файле
/etc/nfs.conf следующим образом:
[lockd]port=tcp-port-numberudp-port=udp-port-number
В качестве альтернативы можно указать nlm_tcpport и nlm_udpport в файле
/etc/modprobe.d/lockd.conf.
3.
Откройте указанные порты в межсетевом экране, выполнив следующие
команды на сервере NFS:
firewall-cmd --permanent --add-port=<lockd-tcp-port>/tcp
firewall-cmd --permanent --add-port=<lockd-udp-port>/udp
4.
Добавьте статические порты для rpc.statd, отредактировав раздел [statd]
файла /etc/nfs.conf следующим образом:
[statd]port=port-number
5.
Откройте добавленные порты в межсетевом экране, выполнив следующие
команды на сервере NFS:
firewall-cmd --permanent --add-port=<statd-tcp-port>/tcp
firewall-cmd --permanent --add-port=<statd-udp-port>/udp
6.
Перезагрузите конфигурацию межсетевого экрана:
firewall-cmd --reload
7.
Сначала перезапустите службу rpc-statd, а затем перезапустите службу nfsserver:
<
## systemctl restart rpc-statd.service
## systemctl restart nfs-server.service
В качестве альтернативы, если указаны порты lockd в файле
/etc/modprobe.d/lockd.conf:
343
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
Обновите текущие значения /proc/sys/fs/nfs/nlm_tcpport и
/proc/sys/fs/nfs/nlm_udpport:
## sysctl -w fs.nfs.nlm_tcpport=<tcp-port># sysctl -w fs.nfs.nlm_udpport=<udp-port>
•
Перезапустите rpc-statd и nfs-server службы:
## systemctl restart rpc-statd.service# systemctl restart nfs-server.service
Настройка сервера только для NFSv4 для работы за межсетевым экраном
Следующая процедура описывает, как настроить сервер только для NFSv4 для
работы за межсетевым экраном.
Процедура:
1.
Чтобы разрешить клиентам доступ к общим ресурсам NFS за межсетевым
экраном, настройте межсетевой экран, выполнив следующую команду на
сервере NFS:
firewall-cmd --permanent --add-service nfs
2.
Перезагрузите конфигурацию межсетевого экрана:
firewall-cmd --reload
3.
Перезапустите nfs-сервер:
## systemctl restart nfs-server
Настройка клиента NFSv3 для работы за межсетевым экраном
Процедура настройки клиента NFSv3 для работы за межсетевым экраном аналогична
процедуре настройки сервера NFSv3 для работы за межсетевым экраном.
Если машина является одновременно клиентом NFS и сервером NFS, следуйте
процедуре, описанной в разделе «Настройка сервера с поддержкой NFSv3 для работы
за межсетевым экраном».
Следующая процедура описывает, как настроить машину, являющуюся клиентом NFS,
только для работы за межсетевым экраном.
Процедура:
344
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Чтобы разрешить серверу NFS выполнять обратные вызовы клиенту NFS, когда
клиент находится за межсетевым экраном, добавьте службу rpc-bind к
межсетевым экрану, выполнив следующую команду на клиенте NFS:
firewall-cmd --permanent --add-service rpc-bind
2.
Укажите порты, которые будут использоваться службой RPC nlockmgr в файле
/etc/nfs.conf следующим образом:
[lockd]port=port-numberudp-port=upd-port-number
В качестве альтернативы можно указать nlm_tcpport и nlm_udpport в файле
/etc/modprobe.d/lockd.conf.
3.
Откройте указанные порты в межсетевым экране, выполнив следующие
команды на клиенте NFS:
firewall-cmd --permanent --add-port=<lockd-tcp-port>/tcp
firewall-cmd --permanent --add-port=<lockd-udp-port>/udp
4.
Добавьте статические порты для rpc.statd, отредактировав раздел [statd]
файла /etc/nfs.conf следующим образом:
[statd]port=port-number
5.
Откройте добавленные порты в межсетевом экране, выполнив следующие
команды на клиенте NFS:
firewall-cmd --permanent --add-port=<statd-tcp-port>/tcp
firewall-cmd --permanent --add-port=<statd-udp-port>/udp
6.
Перезагрузите конфигурацию межсетевого экрана:
firewall-cmd --reload
7.
Перезапустите rpc-statd службу:
## systemctl restart rpc-statd.service
345
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
В качестве альтернативы, если указаны порты lockd в /etc/modprobe.d/lockd.conf
файле:
•
обновите текущие значения /proc/sys/fs/nfs/nlm_tcpport и
/proc/sys/fs/nfs/nlm_udpport:
## sysctl -w fs.nfs.nlm_tcpport=<tcp-port># sysctl -w fs.nfs.nlm_udpport=<udp-port>
•
перезапустите rpc-statd службу:
## systemctl restart rpc-statd.service
Настройка клиента NFSv4 для работы за межсетевым экраном
Выполняйте эту процедуру только в том случае, если клиент использует NFSv4.0. В
этом случае необходимо открыть порт для обратных вызовов NFSv4.0.
Эта процедура не требуется для NFSv4.1 или выше, поскольку в более поздних версиях
протокола сервер выполняет обратные вызовы по тому же соединению, которое
было инициировано клиентом.
Процедура:
1.
Чтобы разрешить обратные вызовы NFSv4.0 проходить через межсетевые
экраны, установите порт /proc/sys/fs/nfs/nfs_callback_tcp и разрешите серверу
подключаться к этому порту на клиенте следующим образом:
## echo "fs.nfs.nfs_callback_tcpport = <callback-port>" >/etc/sysctl.d/90-nfs-callback-port.conf
## sysctl -p /etc/sysctl.d/90-nfs-callback-port.conf
2.
Откройте указанный порт в межсетевым экране, выполнив следующую команду
на клиенте NFS:
firewall-cmd --permanent --add-port=<callback-port>/tcp
3.
Перезагрузите конфигурацию межсетевого экрана:
firewall-cmd --reload
346
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Экспорт квоты RPC через межсетевой экран
Если экспортируете файловую систему, использующую дисковые квоты, можно
использовать службу удаленного вызова процедуры квотирования (RPC) для
предоставления данных дисковых квот клиентам NFS.
Процедура:
1.
Включите и запустите службу rpc-rquotad:
## systemctl enable --now rpc-rquotad
Примечание: Служба rpc-rquotad, если она включена, запускается автоматически
после запуска службы nfs-сервера.
2.
Чтобы сделать службу quotaRPC доступной за межсетевым экраном, TCP (или
UDP, если включен UDP) порт 875 должен быть открыт. Номер порта по
умолчанию определен в /etc/services файле.
3.
Можно переопределить номер порта по умолчанию, добавив номер порта -p к
переменной RPCRQUOTADOPTS в /etc/sysconfig/rpc-rquotad файле.
По умолчанию удаленные хосты могут считывать только квоты. Если необходимо
разрешить клиентам устанавливать квоты, добавьте параметр -S к переменной
RPCRQUOTADOPTS в файле /etc/sysconfig/rpc-rquotad.
4.
Перезапустите rpc-rquotad, чтобы изменения в файле /etc/sysconfig/rpc-rquotad
вступили в силу:
## systemctl restart rpc-rquotad
Включение NFS через RDMA (NFSoRDMA)
Служба удаленного прямого доступа к памяти (RDMA) автоматически работает на
оборудовании с поддержкой RDMA в SberLinux.
Процедура:
1.
Установите rdma-core пакет:
## yum install rdma-core
2.
Убедитесь, что строки с xprtrdma и svcrdma закомментированы в
/etc/rdma/modules/rdma.conf файле:
## NFS over RDMA client supportxprtrdma# NFS over RDMA server supportsvcrdma
347
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
3.
На сервере NFS создайте каталог /mnt/nfsordma и экспортируйте его в
/etc/exports файл:
## mkdir /mnt/nfsordma# echo "/mnt/nfsordma *(fsid=0,rw,async,insecure,no_root_squash)" >>
/etc/exports
4.
На клиенте NFS смонтируйте nfs-share с IP-адресом сервера, например,
172.31.0.186:
## mount -o rdma,port=20049 172.31.0.186:/mnt/nfs-share /mnt/nfs
5.
Перезапустите службу nfs-сервера:
## systemctl restart nfs-server
Защита NFS
Чтобы свести к минимуму риски безопасности NFS и защитить данные на сервере,
рассмотрите следующие разделы при экспорте файловых систем NFS на сервере или
их монтировании на клиенте.
Безопасность NFS с AUTH_SYS и элементами управления экспортом
NFS предоставляет следующие традиционные опции для управления доступом к
экспортированным файлам:
•
•
•
Сервер ограничивает, каким хостам разрешено подключать какие файловые
системы, либо по IP-адресу, либо по имени хоста.
Сервер применяет разрешения файловой системы для пользователей на
клиентах NFS таким же образом, как и для локальных пользователей.
Традиционно NFS делает это с помощью сообщения о вызове AUTH_SYS (также
называемого AUTH_UNIX), которое полагается на то, что клиент указывает UID
и GID пользователя. Имейте в виду, что это означает, что вредоносный или
неправильно сконфигурированный клиент может легко ошибиться и разрешить
пользователю доступ к файлам, которые он не должен.
Чтобы ограничить потенциальные риски, администраторы часто
ограничивают доступ только для чтения или ограничивают пользовательские
разрешения общим идентификатором пользователя и группы. К сожалению, эти
решения не позволяют использовать общий ресурс NFS так, как это было
изначально задумано.
Кроме того, если злоумышленник получит контроль над DNS-сервером, используемым
системой, экспортирующей файловую систему NFS, он может указать систему,
связанную с определенным именем хоста или полным доменным именем, на
348
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
неавторизованный компьютер. На данный момент неавторизованный компьютер это система, которой разрешено подключать общий ресурс NFS, поскольку
информация об имени пользователя или пароле не обменивается для обеспечения
дополнительной безопасности при подключении NFS.
Подстановочные знаки следует использовать экономно при экспорте каталогов
через NFS, поскольку область действия подстановочного знака может охватывать
больше систем, чем предполагалось.
Безопасность NFS с AUTH_GSS
Все версии NFS поддерживают RPCSEC_GSS и механизм Kerberos.
В отличие от AUTH_SYS, с механизмом RPCSEC_GSS Kerberos сервер не зависит от
клиента, чтобы правильно представить, какой пользователь обращается к файлу.
Вместо этого для аутентификации пользователей на сервере используется
криптография, которая не позволяет вредоносному клиенту выдавать себя за
пользователя, не имея учетных данных Kerberos этого пользователя. Использование
механизма RPCSEC_GSS Kerberos является наиболее простым способом обеспечения
безопасности подключений, поскольку после настройки Kerberos не требуется
дополнительная настройка.
Настройка сервера и клиента NFS для использования Kerberos
Kerberos - это сетевая система аутентификации, которая позволяет клиентам и
серверам аутентифицироваться друг перед другом с помощью симметричного
шифрования и доверенной третьей стороны, KDC. Рекомендуется использовать
управление идентификацией (IdM) для настройки Kerberos.
Предварительные условия:
Установлен и настроен Центр распространения ключей Kerberos (KDC).
Процедура:
1.
Создайте nfs/hostname.domain@REALM принципал на стороне сервера NFS.
2.
Создайте host/hostname.domain@REALM принципал как на стороне сервера, так
и на стороне клиента.
3.
Добавьте соответствующие ключи в keytabs для клиента и сервера.
4.
На стороне сервера используйте параметр sec=, чтобы включить требуемые
параметры безопасности. Для включения всех вариантов защиты, а также
некриптографических подключений:
/export *(sec=sys:krb5:krb5i:krb5p)
349
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Допустимыми вариантами безопасности для использования с опцией sec= являются:
•
•
•
sys: отсутствие криптографической защиты по умолчанию;
krb5: только аутентификация;
krb5i: защита целостности.
Использует Kerberos V5 для аутентификации пользователя и выполняет проверку
целостности операций NFS с использованием безопасных контрольных сумм для
предотвращения подделки данных.
•
krb5p: защита конфиденциальности.
Использует Kerberos V5 для аутентификации пользователя, проверки целостности и
шифрует трафик NFS, чтобы предотвратить прослушивание трафика. Это наиболее
безопасная настройка, но она также сопряжена с наибольшими затратами на
производительность.
3.
На стороне клиента добавьте sec=krb5 (или sec=krb5i, или sec=krb5p, в
зависимости от настройки) к параметрам монтирования:
## mount -o sec=krb5 server:/export/mnt
Параметры безопасности NFSv4
NFSv4 включает поддержку ACL на основе модели Microsoft Windows NT, а не модели
POSIX, из-за особенностей модели Microsoft Windows NT и широкого развертывания.
Другой важной функцией безопасности NFSv4 является исключение использования
протокола MOUNT для монтирования файловых систем. Протокол МОНТИРОВАНИЯ
представлял угрозу безопасности из-за того, как протокол обрабатывал файловые
дескрипторы.
Права доступа к файлам для смонтированного экспорта NFS
Как только файловая система NFS смонтирована удаленным хостом либо для чтения,
либо для чтения и записи, единственная защита, которой обладает каждый общий
файл - это его разрешения. Если два пользователя с одинаковым значением
идентификатора пользователя монтируют одну и ту же файловую систему NFS в
разных клиентских системах, они могут изменять файлы друг друга. Кроме того,
любой пользователь, вошедший в систему с правами root в клиентской системе,
может использовать su - команду для доступа к любым файлам с общим ресурсом NFS.
По умолчанию списки контроля доступа (ACL) поддерживаются NFS в SberLinux
рекомендует оставить эту функцию включенной.
По умолчанию NFS использует сжатие корня при экспорте файловой системы. Это
устанавливает идентификатор пользователя любого, кто обращается к общему
350
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
ресурсу NFS в качестве пользователя root на своем локальном компьютере, равным
nobody пользователю. Сжатие корня контролируется параметром root_squash по
умолчанию.
При экспорте общего ресурса NFS как доступного только для чтения, рассмотрите
возможность использования all_squash опции. Этот параметр заставляет каждого
пользователя, получающего доступ к экспортированной файловой системе,
использовать идентификатор nobody пользователя.
Включение макетов pNFS SCSI в NFS
Можно настроить сервер и клиент NFS на использование макета pNFS SCSI для
доступа к данным. pNFS SCSI полезен в случаях использования, которые предполагают
более длительный доступ к файлу для одного клиента.
Предварительные условия:
•
•
•
Клиент и сервер должны иметь возможность отправлять команды SCSI на одно
и то же блочное устройство. То есть блочное устройство должно находиться
на общей шине SCSI.
Блочное устройство должно содержать файловую систему XFS.
Устройство SCSI должно поддерживать постоянное резервирование SCSI, как
описано в спецификации основных команд SCSI-3.
Технология pNFS
Архитектура pNFS улучшает масштабируемость NFS. Когда сервер реализует pNFS,
клиент может получать доступ к данным через несколько серверов одновременно.
Это может привести к повышению производительности.
pNFS поддерживает следующие протоколы хранения или макеты на SberLinux:
•
•
•
Файлы;
Гибкие файлы;
SCSI.
Макеты pNFS SCSI
Макет SCSI основан на работе макетов блоков pNFS. Макет определяется для всех
устройств SCSI. Он содержит последовательный ряд блоков фиксированного размера
в виде логических юнитов (LU), которые должны поддерживать постоянное
резервирование SCSI. Устройства LU идентифицируются по их идентификатору
устройства SCSI.
pNFS SCSI хорошо работает в случаях использования, которые предполагают более
длительный доступ одного клиента к файлу. Примером может служить почтовый
сервер или виртуальная машина, на которой размещен кластер.
351
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Операции между клиентом и сервером
Когда клиент NFS считывает из файла или записывает в него, клиент выполняет
LAYOUTGET операцию. Сервер отвечает местоположением файла на устройстве SCSI.
Клиенту может потребоваться выполнить дополнительную GETDEVICEINFO
операцию, чтобы определить, какое устройство SCSI использовать. Если эти
операции работают правильно, клиент может отправлять запросы ввода-вывода
непосредственно на устройство SCSI вместо отправки операций чтения и записи на
сервер.
Ошибки или разногласия между клиентами могут привести к тому, что сервер
отзывает макеты или не выдает их клиентам. В этих случаях клиенты
возвращаются к выполнению операций чтения и записи на сервер вместо отправки
запросов ввода-вывода непосредственно на устройство SCSI.
Резервирование устройств
pNFS SCSI обрабатывает ограждение посредством назначения резервирования.
Прежде чем сервер выдаст макеты клиентам, он резервирует устройство SCSI,
чтобы гарантировать, что только зарегистрированные клиенты могут получить
доступ к устройству. Если клиент может выдавать команды этому устройству SCSI,
но не зарегистрирован на устройстве, многие операции клиента на этом
устройстве завершаются неудачей. Например, команда blkid на клиенте не
показывает UUID файловой системы XFS, если сервер не предоставил клиенту макет
для этого устройства.
Сервер не удаляет свое собственное постоянное резервирование. Это защищает
данные в файловой системе устройства при перезапуске клиентов и серверов. Чтобы
перепрофилировать устройство SCSI, может потребоваться вручную удалить
постоянное резервирование на сервере NFS.
Проверка устройства SCSI, совместимого с pNFS
Эта процедура проверяет, поддерживает ли устройство SCSI макет pNFS SCSI.
Предварительные условия:
•
Установите sg3_utils пакет:
## yum install sg3_utils
Процедура:
Как на сервере, так и на клиенте проверьте правильность поддержки устройств
SCSI:
352
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
sg_persist --in --report-capabilities --verbose path-to-scsi-device
Убедитесь, что установлен бит сохранения при отключении питания активным
(PTPL_A).
Настройка pNFS SCSI на сервере
Эта процедура настраивает сервер NFS для экспорта макета pNFS SCSI.
Процедура:
1.
На сервере смонтируйте файловую систему XFS, созданную на устройстве SCSI.
2.
Настройте сервер NFS для экспорта NFS версии 4.1 или выше. Установите
следующий параметр в [nfsd] разделе /etc/nfs.conf файла:
[nfsd]
vers4.1=y
3.
Настройте сервер NFS для экспорта файловой системы XFS через NFS с pnfs
опцией.
Примечание: Экспортируемая файловая система должна быть создана на всем
блочном устройстве, а не только на разделе.
Настройка pNFS SCSI на клиенте
Эта процедура настраивает клиент NFS для подключения nfs SCSI макета.
Предварительные условия:
Сервер NFS настроен на экспорт файловой системы XFS через nfs SCSI макет.
Процедура:
На клиенте смонтируйте экспортированную файловую систему XFS, используя NFS
версии 4.1 или выше:
## mount -t nfs -o nfsvers=4.1 host:/remote/export/local/directory
Не монтируйте файловую систему XFS напрямую без NFS.
353
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Снятие резервирования pNFS SCSI на сервере
Эта процедура освобождает постоянное резервирование, которое сервер NFS
хранит на устройстве SCSI. Это позволяет перепрофилировать устройство SCSI,
когда больше не нужно экспортировать pNFS SCSI.
Необходимо удалить резервирование с сервера. Он не может быть удален из другого
ИТ-узла.
Предварительные условия:
Установите пакет sg3_utils:
## yum install sg3_utils
Процедура:
1.
Запросите существующее резервирование на сервере:
## sg_persist --read-reservation path-to-scsi-device
2.
Удалите существующую регистрацию на сервере:
## sg_persist --out \
--release \
--param-rk=reservation-key \
--prout-type=6 \
path-to-scsi-device
Настройка кеширующего прокси-сервера Squid
Squid - это прокси-сервер, который кеширует содержимое, чтобы уменьшить
пропускную способность и ускорить загрузку веб-страниц. В этой главе
описывается, как настроить Squid в качестве прокси-сервера для протоколов HTTP,
HTTPS и FTP, а также аутентификацию и ограничение доступа.
Настройка Squid в качестве кеширующего прокси без аутентификации
В этом разделе описывается базовая конфигурация Squid в качестве кеширующего
прокси-сервера без проверки подлинности. Процедура ограничивает доступ к
прокси-серверу на основе диапазонов IP-адресов.
Предварительные условия
354
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
Процедура предполагает, что /etc/squid/squid.conf файл соответствует тому,
что предусмотрено squid пакетом. Если этот файл редактировался ранее,
удалите файл и переустановите пакет.
Процедура
1.
Установите squid пакет:
## yum install squid
2.
•
Отредактируйте /etc/squid/squid.conf файл:
Адаптируйте localnet списки контроля доступа (ACL) в соответствии с
диапазонами IP-адресов, которым должно быть разрешено использовать
прокси-сервер:
acl localnet src 192.0.2.0/24
acl localnet 2001:db8:1::/64
•
По умолчанию /etc/squid/squid.conf файл содержит http_access allow localnet
правило, позволяющее использовать прокси-сервер из всех диапазонов IPадресов, указанных в localnet списках управления доступом. Обратите
внимание, что необходимо указать все localnet списки управления доступом
перед http_access allow localnet правилом.
Примечание: Удалите все существующие acl localnet записи, которые не
соответствуют среде.
•
Следующий список управления доступом существует в конфигурации по
умолчанию и определяется 443как порт, использующий протокол HTTPS:
acl SSL_ports порт 443
•
Если пользователи должны иметь возможность использовать протокол HTTPS
также на других портах, добавьте ACL для каждого из этих портов:
acl SSL_ports port port_number
•
Обновите список acl Safe_ports правил, чтобы настроить, к каким портам Squid
может устанавливать соединение. Например, чтобы настроить, чтобы
клиенты, использующие прокси-сервер, могли получать доступ к ресурсам
только через порты 21 (FTP), 80 (HTTP) и 443 (HTTPS), сохраняйте в
конфигурации только следующие acl Safe_ports инструкции:
355
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
acl Safe_ports port 21acl Safe_ports port 80acl Safe_ports port 443
По умолчанию конфигурация содержит http_access deny !Safe_ports правило,
определяющее отказ в доступе к портам, которые не определены в Safe_ports списках
управления доступом.
•
Настройте тип кеша, путь к каталогу кеша, размер кеша и другие параметры,
зависящие от типа кеша, в параметре cache_dir:
cache_dir ufs /var/spool/squid 10000 16 256
С этими настройками:
•
•
•
•
•
2.
•
Squid использует ufs тип кеша.
Squid хранит свой кеш в /var/spool/squid/ каталоге.
Объем кеша увеличивается до 10000 МБ.
Squid создает 16 подкаталогов уровня 1 в /var/spool/squid/ каталоге.
Squid создает 256 подкаталогов в каждом каталоге уровня 1. Если не задали
cache_dir директиву, Squid сохраняет кеш в памяти.
Если задали другой каталог кеша, чем /var/spool/squid/в cache_dir каталог:
Создайте каталог кеша:
## mkdir -p path_to_cache_directory
•
Настройте разрешения для каталога кеша:
## chown squid:squid path_to_cache_directory
Если запущен SELinux в enforcing режиме, задайте squid_cache_t контекст для
каталога кеша:
## semanage fcontext -a -t squid_cache_t "path_to_cache_directory(/.*)?"
## restorecon -Rv path_to_cache_directory
Если semanage утилита недоступна в системе, установите policycoreutils-pythonutils пакет.
4.
Откройте 3128 порт в межсетевом экране:
## firewall-cmd --permanent --add-port=3128/tcp
356
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## firewall-cmd --reload
5.
Включите и запустите squid службу:
## systemctl включить -теперь squid
Этапы проверки:
Чтобы убедиться в правильности работы прокси-сервера, загрузите веб-страницу с
помощью curl утилиты:
## curl -O -L "https://www.sberlinux.com/index.html" -x "proxy.example.ru:3128"
Если curl не отображается никакой ошибки и index.html файл был загружен в текущий
каталог, прокси работает.
Настройка Squid в качестве кеширующего прокси с аутентификацией LDAP
В этом разделе описывается базовая конфигурация Squid как кеширующего проксисервера, который использует LDAP для аутентификации пользователей. Процедура
настраивает, что только аутентифицированные пользователи могут использовать
прокси-сервер.
Предварительные условия:
Процедура предполагает, что файл /etc/squid/squid.conf соответствует тому, что
предусмотрено пакетом squid. Если этот файл редактировался ранее, удалите файл
и переустановите пакет. Пользователь службы, такой как
uid=proxy_user,cn=users,cn=accounts,dc=example,dc=com, существует в каталоге LDAP.
Squid использует эту учетную запись только для поиска пользователя, проходящего
аутентификацию. Если аутентифицирующий пользователь существует, Squid
привязывается как этот пользователь к каталогу для проверки подлинности.
Процедура:
1.
Установите squid пакет:
## yum install squid
2.
•
Отредактируйте файл /etc/squid/squid.conf:
Чтобы настроить вспомогательную утилиту basic_ldap_auth, добавьте
следующую запись конфигурации в начало файла /etc/squid/squid.conf:
357
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
auth_param basic program /usr/lib64/squid/basic_ldap_auth -b
"cn=users,cn=accounts,dc=example,dc=com" -D
"uid=proxy_user,cn=users,cn=accounts,dc=example,dc=com" -W /etc/squid/ldap_password -f
"(&(objectClass=person)(uid=%s))" -ZZ -H ldap://ldap_server.example.ru:389
Ниже описаны параметры, переданные вспомогательной утилите basic_ldap_auth в
приведенном выше примере:
•
•
•
•
•
•
-b base_DN задает базу поиска LDAP.
-D proxy_service_user_DN задает различимое имя (DN) учетной записи, которую
Squid использует для поиска аутентифицирующего пользователя в каталоге.
-W path_to_password_file задает путь к файлу, который содержит пароль
пользователя прокси-службы. Использование файла паролей предотвращает
отображение пароля в списке процессов операционной системы.
-f LDAP_filter задает фильтр поиска LDAP. Squid заменяет переменную %s
именем пользователя, предоставленным аутентифицирующим пользователем.
Фильтр (&(objectClass=person)(uid=%s)) в примере определяет, что имя
пользователя должно соответствовать значению, заданному в атрибуте uid, и
что запись каталога содержит класс person объекта.
-ZZ обеспечивает принудительное соединение, зашифрованное TLS, по
протоколу LDAP с помощью команды STARTTLS. Не задействуйте -ZZ в
следующих ситуациях:
– Сервер LDAP не поддерживает зашифрованные соединения.
– Порт, указанный в URL-адресе, использует протокол LDAPS.
Параметр -H LDAP_URLзадает протокол, имя хоста или IP-адрес и порт
сервера LDAP в формате URL.
Добавьте следующий ACL и правило, чтобы настроить, что Squid разрешает
использовать прокси только аутентифицированным пользователям:
acl ldap-auth proxy_auth REQUIRED
http_access allow ldap-auth
Примечание: Укажите эти параметры перед http_access правилом.
•
Удалите следующее правило, чтобы отключить обход проверки подлинности
прокси из диапазонов IP, указанных в списках управления localnet доступом:
http_access allow localnet
•
Следующий ACL существует в конфигурации по умолчанию и определяет 443 как
порт, использующий протокол HTTPS:
358
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
acl SSL_ports port 443
Если пользователи должны иметь возможность использовать протокол HTTPS также
на других портах, добавьте ACL для каждого из этих портов:
acl SSL_ports port port_number
•
Обновите список acl Safe_ports правил, чтобы настроить, к каким портам Squid
может устанавливать соединение. Например, чтобы настроить, чтобы
клиенты, использующие прокси-сервер, могли получать доступ к ресурсам
только через порты 21 (FTP), 80 (HTTP) и 443 (HTTPS), сохраняйте в
конфигурации только следующие acl Safe_ports инструкции:
acl Safe_ports port 21
acl Safe_ports port 80
acl Safe_ports port 443
По умолчанию конфигурация содержит http_access ! запрет. Правило Safe_ports,
определяющее отказ в доступе к портам, которые не определены в списках
управления Safe_ports доступом.
•
Настройте тип кеша, путь к каталогу кеша, размер кеша и другие параметры,
зависящие от типа кеша, в cache_dir параметре:
cache_dir ufs /var/spool/squid 10000 16 256
С этими настройками:
•
•
•
•
•
Squid использует тип ufs кеша.
Squid хранит свой кеш в каталоге /var/spool/squid/.
Объем кеша увеличивается до 10000 МБ.
Squid создает 16 подкаталогов уровня 1 в каталоге /var/spool/squid/**.
Squid создает 256 подкаталогов в каждом каталоге уровня 1.
Если не задаете директиву cache_dir, Squid сохраняет кеш в памяти.
3.
•
Если задали в параметре cache_dir каталог кеша, отличный от /var/spool/squid/
каталога:
Создайте каталог кеша:
## mkdir -p path_to_cache_directory
359
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
Настройте разрешения для каталога кеша:
## chown squid:squid path_to_cache_directory
•
Если запускаете SELinux в принудительном режиме, установите контекст
squid_cache_t для каталога кеша:
## semanage fcontext -a -t squid_cache_t "path_to_cache_directory(/.*)?"
## restorecon -Rv path_to_cache_directory
Если утилита semanage недоступна в системе, установите policycoreutils-pythonutils пакет.
4.
Сохраните пароль пользователя службы LDAP в файле /etc/squid/ldap_password и
установите соответствующие разрешения для файла:
## echo "password" > /etc/squid/ldap_password# chown root:squid /etc/squid/ldap_password#
chmod 640 /etc/squid/ldap_password
5.
Откройте порт 3128 в межсетевом экране:
## firewall-cmd --permanent --add-port=3128/tcp# firewall-cmd --reload
6.
Включите и запустите squid службу:
## systemctl enable --now squid
Этапы проверки:
Чтобы убедиться, что прокси работает правильно, загрузите веб-страницу с
помощью curl утилиты:
## curl -O -L "https://www.sberlinux.com/index.html" -x
"user_name:[email protected]:3128"
Если curl не отображает никакой ошибки и index.html файл был загружен в текущий
каталог, прокси работает.
Шаги по устранению неполадок:
Чтобы убедиться, что вспомогательная утилита работает правильно:
360
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Вручную запустите вспомогательную утилиту с теми же настройками,
которые использовали в auth_param параметре:
## /usr/lib64/squid/basic_ldap_auth -b "cn=users,cn=accounts,dc=example,dc=com" -D
"uid=proxy_user,cn=users,cn=accounts,dc=example,dc=com" -W /etc/squid/ldap_password -f
"(&(objectClass=person)(uid=%s))" -ZZ -H ldap://ldap_server.example.ru:389
2.
Введите действительное имя пользователя и пароль и нажмите Enter:
user_name password
Если вспомогательная утилита возвращает OK, аутентификация прошла успешно.
Настройка Squid в качестве кеширующего прокси с аутентификацией kerberos
В этом разделе описывается базовая конфигурация Squid как кеширующего проксисервера, который проверяет подлинность пользователей в Active Directory (AD) с
использованием Kerberos. Процедура настраивает, что прокси-сервер могут
использовать только аутентифицированные пользователи.
Предварительные условия:
•
•
Процедура предполагает, что /etc/squid/squid.conf файл соответствует тому,
что предусмотрено squid пакетом. Если этот файл редактировался ранее,
удалите файл и переустановите пакет.
Сервер, на который можно установить Squid, является частью домена AD.
Процедура:
1.
Установите следующие пакеты:
yum install squid krb5-workstation
2.
Аутентификация в качестве администратора домена AD:
## kinit administrator@
3.
Создайте ключевую вкладку для Squid и сохраните ее в/etc/squid/HTTP.keytab
файле:
## export KRB5_KTNAME=FILE:/etc/squid/HTTP.keytab
## net ads keytab CREATE -U administrator
361
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
4.
Добавьте участника HTTP службы на вкладку ключей:
## net ads keytab **Add** HTTP -U administrator
5.
Установите владельца файла keytab для squid пользователя:
## chown squid /etc/squid/HTTP.keytab
6.
При необходимости убедитесь, что файл keytab содержит субъект-службу HTTP
для полного доменного имени (FQDN) прокси-сервера:
klist -k /etc/squid/HTTP.keytab
Keytab name: FILE:/etc/squid/HTTP.keytab
KVNO Principal
---- --------------------------------------------------...
2 HTTP/[email protected] ...
7.
•
Отредактируйте /etc/squid/squid.conf файл:
Чтобы настроить negotiate_kerberos_auth вспомогательную утилиту, добавьте
следующую запись конфигурации в начало /etc/squid/squid.conf:
auth_param negotiate program /usr/lib64/squid/negotiate_kerberos_auth -k /etc/squid/HTTP.keytab
-s HTTP/
Ниже описаны параметры, переданные negotiate_kerberos_auth вспомогательной
утилите в приведенном выше примере:
•
•
•
k file задает путь к файлу ключевой вкладки. Обратите внимание, что
пользователь squid должен иметь права на чтение этого файла.
-s HTTP/host_name@kerberos_realm задает принципал Kerberos, который
использует Squid. При необходимости можно включить ведение журнала,
передав вспомогательной утилите один или оба следующих параметра:
– -i регистрирует информационные сообщения, такие как
аутентифицирующий пользователь.
– -d включает ведение журнала отладки. Squid записывает отладочную
информацию из вспомогательной утилиты в /var/log/squid/cache.log файл.
Добавьте следующий список управления доступом и правило, чтобы настроить
Squid для использования прокси-сервера только аутентифицированным
пользователям:
acl kerb-auth proxy_auth REQUIRED
362
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
http_access allow kerb-auth
•
Удалите следующее правило, чтобы отключить обход проверки подлинности
прокси-сервера из диапазонов IP, указанных в localnet списках управления
доступом:
http_access allow localnet
•
Следующий список управления доступом существует в конфигурации по
умолчанию и определяется 443как порт, использующий протокол HTTPS:
acl SSL_ports port 443
Если пользователи должны иметь возможность использовать протокол HTTPS также
на других портах, добавьте ACL для каждого из этих портов:
acl SSL_ports port port_number
•
Обновите список acl Safe_ports правил, чтобы настроить, к каким портам Squid
может устанавливать соединение. Например, чтобы настроить, чтобы
клиенты, использующие прокси-сервер, могли получать доступ к ресурсам
только через порты 21 (FTP), 80 (HTTP) и 443 (HTTPS), сохраняйте в
конфигурации только следующие acl Safe_ports инструкции:
acl Safe_ports port 21acl Safe_ports port 80acl Safe_ports port 443
По умолчанию конфигурация содержит http_access deny !Safe_ports правило,
определяющее отказ в доступе к портам, которые не определены в Safe_ports списках
управления доступом.
•
Настройте тип кеша, путь к каталогу кеша, размер кеша и другие параметры,
зависящие от типа кеша, в cache_dir параметре:
cache_dir ufs /var/spool/squid 10000 16 256
С этими настройками:
•
•
•
•
Squid использует ufs тип кеша.
Squid хранит свой кеш в /var/spool/squid/ каталоге.
Объем кеша увеличивается до 10000 Мбайт.
Squid создает 16 подкаталогов уровня 1 в /var/spool/squid/ каталоге.
363
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
2.
•
Squid создает 256 подкаталогов в каждом каталоге уровня 1. Если не задана
cache_dir директива, Squid сохраняет кеш в памяти.
Если задали другой каталог кеша, чем /var/spool/squid/ в cache_dir параметре:
Создайте каталог кеша:
## mkdir -p path_to_cache_directory
•
Настройте разрешения для каталога кеша:
## chown squid:squid path_to_cache_directory
•
Если запускаете SELinux в enforcing режиме, задайте squid_cache_t контекст для
каталога кеша:
## semanage fcontext -a -t squid_cache_t "path_to_cache_directory(/.*)?" # restorecon -Rv
path_to_cache_directory
Если semanage утилита недоступна в системе, установите policycoreutils-pythonutils пакет.
9.
Откройте 3128 порт в межсетевом экране:
## firewall-cmd --permanent --add-port=3128/tcp # firewall-cmd --reload
10. Включите и запустите squid службу:
## systemctl enable --now squid
Этапы проверки:
Чтобы убедиться в правильности работы прокси-сервера, загрузите веб-страницу с
помощью curl утилиты:
## curl -O -L "https://www.sberlinux.ru/index.html" --proxy-negotiate -u : -x
"proxy.ad.example.ru:3128"
Если curl не отображается никакой ошибки и index.html файл существует в текущем
каталоге, прокси работает.
Шаги по устранению неполадок:
Чтобы вручную протестировать проверку подлинности Kerberos:
364
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Получите тикет Kerberos для рекламного аккаунта:
## kinit user@
2.
При необходимости отобразите тикет:
## klist
3.
Используйте negotiate_kerberos_auth_test утилиту для проверки подлинности:
## /usr/lib64/squid/negotiate_kerberos_auth_test proxy.ad.example.ru
Если вспомогательная утилита возвращает токен, проверка подлинности прошла
успешно:
Token: YIIFtAYGKwYBBQUCoIIFqDC...
Настройка списка запрещенных доменов в Squid
Часто администраторы хотят заблокировать доступ к определенным доменам. В
этом разделе описывается, как настроить список запрещенных доменов в Squid.
Предварительные условия:
Squid настроен, и пользователи могут использовать прокси-сервер.
Процедура:
1.
Отредактируйте файл /etc/squid/squid.conf и добавьте следующие настройки:
acl domain_deny_list dstdomain "/etc/squid/domain_deny_list.txt"http_access deny all
domain_deny_list
Примечание: Добавьте эти записи перед первым оператором http_access allow,
который разрешает доступ пользователям или клиентам.
2.
Создайте /etc/squid/domain_deny_list.txt файл и добавьте домены, которые
необходимо заблокировать. Например, чтобы заблокировать доступ к
example.ru включая поддомены и блокировать example.net:
. example.ru
example.net
365
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Примечание: Если сослались на /etc/squid/domain_deny_list.txt файл в конфигурации
squid, этот файл не должен быть пустым. Если файл пуст, Squid не запускается.
3.
Перезапустите squid службу:
## systemctl restart squid
Настройка службы Squid для прослушивания определенного порта или IP-адреса
По умолчанию прокси-служба Squid прослушивает порт 3128 на всех сетевых
интерфейсах. В этом разделе описывается, как изменить порт и настроить Squid
для прослушивания определенного IP-адреса.
Предварительные условия:
Пакет squid установлен.
Процедура:
1.
•
Отредактируйте /etc/squid/squid.conf файл:
Чтобы задать порт, на котором прослушивается Squid служба, задайте номер
порта в http_port параметре. Например, чтобы установить порт на 8080,
установите:
http_port 8080
•
Чтобы настроить, по какому IP-адресу прослушивается служба Squid, задайте
IP-адрес и номер порта в параметре http_port. Например, чтобы настроить,
чтобы Squid прослушивал только IP-адрес 192.0.2.1 на порту 3128, установите:
http_port 192.0.2.1:3128
Добавьте несколько параметров http_port в файл конфигурации, чтобы настроить
прослушивание Squid на нескольких портах и IP-адресах:
http_port 192.0.2.1:3128
http_port 192.0.2.1:8080
2.
•
Если настроили, что Squid использует другой порт по умолчанию (3128):
Откройте порт в межсетевом экране:
## firewall-cmd --permanent --add-port=port_number/tcp# firewall-cmd --reload
366
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
Если запускаете SELinux в принудительном режиме, назначьте порт
определению типа порта squid_port_t:
## semanage port -a -t squid_port_t -p tcp port_number
Если утилита semanage недоступна в системе, установите policycoreutils-pythonutils пакет.
3.
Перезапустите службу squid:
## systemctl restart squid
Дополнительные ресурсы
Смотрите файл usr/share/doc/squid-/squid.conf.documentated для получения списка
всех параметров конфигурации, которые можно установить в файле
/etc/squid/squid.conf, вместе с подробным описанием.
Серверы баз данных
Введение в серверы баз данных
Сервер базы данных - это служба, предоставляющая функции системы управления
базами данных (СУБД). СУБД предоставляет утилиты для администрирования баз
данных и взаимодействует с конечными пользователями, приложениями и базами
данных.
Использование MariaDB
Сервер MariaDB - это быстрый и надежный сервер баз данных с открытым исходным
кодом, основанный на технологии MySQL. В этой части описывается, как установить
и настроить MariaDB в системе SberLinux, как создать резервную копию данных
MariaDB, как выполнить миграцию с более ранней версии MariaDB и как
реплицировать базу данных с помощью кластера MariaDB Galera.
Начало работы с MariaDB
MariaDB - это реляционная база данных, которая преобразует данные в
структурированную информацию и предоставляет интерфейс SQL для доступа к
данным. Он включает в себя несколько механизмов хранения данных и плагинов, а
также функции географической информационной системы (ГИС) и объектной нотации
JavaScript (JSON).
Установка MariaDB
367
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
В SberLinux сервер MariaDB доступен в следующих версиях, каждая из которых
предоставляется отдельным потоком:
•
•
MariaDB 10.3
MariaDB 10.5
Чтобы установить MariaDB, используйте следующую процедуру.
Процедура:
1.
Установите серверные пакеты MariaDB, выбрав поток (версию) из модуля
mariadb и указав профиль сервера. Например:
## yum module install mariadb:10.3/server
2.
Запустите службу mariadb:
## systemctl start mariadb.service
3.
Включите запуск службы mariadb при загрузке:
## systemctl enable mariadb.service
4.
Рекомендуется: Для повышения безопасности при установке MariaDB
выполните следующую команду:
$ mysql_secure_installation
Команда запускает полностью интерактивный скрипт, который запрашивает
информацию о каждом шаге процесса. Скрипт позволяет повысить безопасность
следующими способами:
•
•
•
Установкой пароля для учетных записей root;
Удалением анонимных пользователей;
Запрещением удаленных корневых входов в систему (за пределами локального
хоста).
Настройка MariaDB
Чтобы настроить сервер MariaDB для работы в сети, используйте следующую
процедуру.
Процедура:
Отредактируйте раздел [mysqld] в файле /etc/my.cnf.d/mariadb-server.cnf. Можно
установить следующие директивы конфигурации:
368
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
bind-address - это адрес, по которому сервер прослушивает. Возможными
вариантами являются:
– имя хоста;
– адрес IPv4;
– пропуск адреса IPv6.
skip-networking - определяет, прослушивает ли сервер соединения TCP/IP. Возможными
значениями являются:
•
•
0 - прослушивать всех клиентов;
1 - только для прослушивания.
port - порт, на котором MariaDB прослушивает TCP/IP-соединения.
2.
Перезапустите службу mariadb:
## systemctl restart mariadb.service
Настройка шифрования TLS на сервере MariaDB
По умолчанию MariaDB использует незашифрованные соединения. Для обеспечения
безопасных подключений включите поддержку TLS на сервере MariaDB и настройте
своих клиентов на установление зашифрованных подключений.
Размещение сертификата CA, сертификата сервера и закрытого ключа на сервере
MariaDB
Прежде чем появится возможность включить шифрование TLS на сервере MariaDB,
сохраните сертификат центра сертификации (CA), сертификат сервера и закрытый
ключ на сервере MariaDB.
Предварительные условия:
Следующие файлы в формате Privacy Enhanced Mail (PEM) были скопированы на сервер:
•
•
•
закрытый ключ сервера: server.example.ru.key.pem
сертификат сервера: server.example.ru.crt.pem
сертификат центра сертификации (CA): ca.crt.pem
Дополнительные сведения о создании закрытого ключа и запроса на подпись
сертификата (CSR), а также о запросе сертификата у центра сертификации см. в
документации центра сертификации.
Процедура:
1.
Сохраните сертификаты центра сертификации и сервера в /etc/pki/tls/certs/
каталоге:
369
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## mv <path>/server.example.ru.crt.pem /etc/pki/tls/certs/# mv <path>/ca.crt.pem
/etc/pki/tls/certs/
2.
Установите разрешения для центра сертификации и сертификата сервера,
которые позволяют серверу MariaDB считывать файлы:
## chmod 644 /etc/pki/tls/certs/server.example.ru ru.crt.pem /etc/pki/tls/certs/ca.crt.pem
Поскольку сертификаты являются частью обмена данными до установления
защищенного соединения, любой клиент может получить их без проверки
подлинности. Поэтому не нужно устанавливать строгие разрешения для файлов
сертификатов центра сертификации и сервера.
3.
Сохраните закрытый ключ сервера в /etc/pki/tls/private/ каталоге:
## mv <path>/server.example.ru.key.pem /etc/pki/tls/private/
4.
Установите безопасные разрешения для закрытого ключа сервера:
## chmod 640 /etc/pki/tls/private/server.example.ru ru.key.pem
## chgrp mysql /etc/pki/tls/private/server.example.ru ru.key.pem
Если неавторизованные пользователи имеют доступ к закрытому ключу, соединения
с сервером MariaDB больше не являются безопасными.
5.
Восстановите контекст SELinux:
## restorecon -Rv /etc/pki/tls/
Настройка TLS на сервере MariaDB
Чтобы повысить безопасность, включите поддержку TLS на сервере Marias. В
результате клиенты могут передавать данные с сервера, используя шифрование TLS.
Предварительные условия:
•
•
•
Установлен MariaDB.
Служба mariadb запущена.
Следующие файлы в формате Privacy Enhanced Mail (PEM) существуют на
сервере и доступны для чтения mysql пользователем:
– Закрытый ключ сервера: /etc/pki/tls/private/server.example.ru.key.pem
– Сертификат сервера: /etc/pki/tls/certs/server.example.ru.crt.pem
– Сертификат центра сертификации (CA) /etc/pki/tls/certs/ca.crt.pem
370
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
Поле Отличительное имя субъекта (DN) или альтернативное имя субъекта
(SAN) в сертификате сервера соответствует имени хоста сервера.
Процедура:
1.
•
Создайте /etc/my.cnf.d/mariadb-server-tls.cnf файл:
Добавьте следующее содержимое для настройки путей к закрытому ключу,
серверу и сертификату CA:
[mariadb]
ssl_key = /etc/pki/tls/private/server.example.ru.key.pem
ssl_cert = /etc/pki/tls/certs/server.example.ru.crt.pem
ssl_ca = /etc/pki/tls/certs/ca.crt.pem
•
Если есть список отзыва сертификатов (CRL), настройте сервер MariaDB для
его использования:
ssl_crl = /etc/pki/tls/certs/example.crl.pem
•
При необходимости, если используете MariaDB 10.5.2 или более поздней версии,
можно отклонять попытки подключения без шифрования. Чтобы включить эту
функцию, добавьте:
require_secure_transport = on
•
При необходимости, если используете MariaDB 10.4.6 или более поздней версии,
можно установить версии TLS, которые должен поддерживать сервер.
Например, для поддержки TLS 1.2 и TLS 1.3 добавьте:
tls_version = TLSv1.2,TLSv1.3
По умолчанию сервер поддерживает TLS 1.1, TLS 1.2 и TLS 1.3.
2.
Перезапустите mariadb службу:
## systemctl restart mariadb
Проверка:
Чтобы упростить устранение неполадок, выполните следующие действия на сервере
MariaDB, прежде чем настраивать локальный клиент на использование шифрования
TLS:
1.
Убедитесь, что в MariaDB включено шифрование TLS:
371
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## mysql -u root -p -e "SHOW GLOBAL VARIABLES LIKE 'have_ssl';"
+---------------+-----------------+
| Variable_name | Value
|
+---------------+-----------------+
| have_ssl | YES
|
+---------------+-----------------+
2.
Если служба MariaDB настроена на поддержку только определенных версий TLS,
отобразите tls_version переменную:
## mysql -u root -p -e "SHOW GLOBAL VARIABLES LIKE 'tls_version';"
+---------------+-----------------+
| Variable_name | Value
|
+---------------+-----------------+
| tls_version | TLSv1.2,TLSv1.3 |
+---------------+-----------------+
Требование зашифрованных соединений TLS для определенных учетных записей
пользователей
Пользователи, имеющие доступ к конфиденциальным данным, всегда должны
использовать соединение, зашифрованное TLS, чтобы избежать отправки данных в
незашифрованном виде по сети.
Если не получается настроить на сервере, что для всех подключений требуется
безопасный транспорт (require_secure_transport = on), настройте отдельные учетные
записи пользователей так, чтобы для них требовалось шифрование TLS.
Предварительные условия:
•
•
На сервере MariaDB включена поддержка TLS.
Пользователь, которого настраиваете для требования безопасного
транспорта, существует.
Процедура:
1.
Подключитесь как администратор к MariaDB:
## mysql -u root -p -h server.example.ru
Если у администратора нет прав на удаленный доступ к серверу, выполните команду
на сервере MariaDB и подключитесь к localhost.
2.
Используйте предложение REQUIRE SSL для обеспечения того, чтобы
пользователь подключался с использованием соединения, зашифрованного TLS:
372
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
MariaDB [(none)]> ALTER USER 'example'@'%' REQUIRE SSL;
Проверка:
1.
Подключитесь к серверу в качестве примера пользователя, используя
шифрование TLS:
## mysql -u example -p -h server.example.ru --ssl...MariaDB [(none)]>
Если ошибка не отображается и есть доступ к интерактивной консоли MariaDB,
соединение с помощью TLS выполнено успешно.
2.
Проверьте подключение в качестве примера пользователя с отключенным TLS:
## mysql -u example -p -h server.example.ru --skip-sslERROR 1045 (28000): Access denied for user
'example'@'server.example.ru' (using password: YES)
Сервер отклонил попытку входа в систему, поскольку для этого пользователя
требуется протокол TLS, но он отключен (–skip-ssl).
Глобальное включение шифрования TLS в клиентах MariaDB
Если сервер MariaDB поддерживает шифрование TLS, настройте своих клиентов так,
чтобы они устанавливали только безопасные соединения и проверяли сертификат
сервера. Эта процедура описывает, как включить поддержку TLS для всех
пользователей на сервере.
Настройка клиента MariaDB для использования шифрования TLS по умолчанию
В SberLinux можно глобально настроить, чтобы клиент MariaDB использовал
шифрование TLS и проверял, что общее имя (CN) в сертификате сервера совпадает с
именем хоста, к которому подключается пользователь. Это предотвращает атаки
типа «человек посередине».
Предварительные условия:
На сервере MariaDB включена поддержка TLS.
Процедура:
1.
•
Если SberLinux не доверяет центру сертификации, выдавшему сертификат
сервера:
Скопируйте сертификат CA в каталог /etc/pki/ca-trust/source/anchors/:
## cp <path>/ca.crt.pem /etc/pki/ca-trust/source/anchors/
373
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
Установите разрешения, позволяющие всем пользователям читать файл
сертификата CA:
## chmod 644 /etc/pki/ca-trust/source/anchors/ca.crt.pem
•
Перестройте базу данных доверия центра сертификации:
## update-ca-trust
2.
Создайте файл /etc/my.cnf.d/mariadb-client-tls.cnf со следующим содержимым:
[client-mariadb]sslssl-verify-server-cert
Эти параметры определяют, что клиент MariaDB использует шифрование TLS (ssl) и
что клиент сравнивает имя хоста с CN в сертификате сервера (ssl-verify-server-cert).
Проверка:
Подключитесь к серверу, используя имя хоста, и отобразите статус сервера:
## mysql -u root -p -h server.example.ru -e status...SSL:
Cipher in use is TLS_AES_256_GCM_SHA384
Если запись SSL содержит используемый шифр is…, значит соединение зашифровано.
Обратите внимание, что пользователь, который используется в этой команде,
имеет разрешения на удаленную аутентификацию.
Если имя хоста, к которому подключаетесь, не совпадает с именем хоста в
сертификате TLS сервера, параметр ssl-verify-server-cert приводит к сбою
подключения. Например, если подключились к localhost:
## mysql -u root -p -h localhost -e statusERROR 2026 (HY000): SSL connection error: Validation of SSL
server certificate failed
Резервное копирование данных MariaDB
Существует два основных способа резервного копирования данных из базы данных
MariaDB в SberLinux:
•
•
Логическое резервное копирование.
Физическое резервное копирование.
374
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Логическое резервное копирование состоит из инструкций SQL, необходимых для
восстановления данных. Этот тип резервного копирования экспортирует
информацию и записи в виде обычных текстовых файлов.
Основным преимуществом логического резервного копирования перед физическим
является переносимость и гибкость. Данные могут быть восстановлены на других
конфигурациях оборудования, версиях MariaDB или системе управления базами данных
(СУБД), что невозможно при физических резервных копиях.
Обратите внимание, что логическое резервное копирование может быть выполнено,
если запущена mariadb.service служба. Логическая резервная копия не включает файлы
журнала и конфигурации.
Физическая резервная копия состоит из копий файлов и каталогов, в которых
хранится содержимое.
Физическое резервное копирование имеет следующие преимущества по сравнению с
логическим резервным копированием:
•
•
•
•
Выход более компактный.
Резервная копия меньше по размеру.
Резервное копирование и восстановление выполняются быстрее.
Резервная копия включает в себя файлы журнала и конфигурации.
Обратите внимание, что физическое резервное копирование должно выполняться,
когда mariadb.service не запущен или все таблицы в базе данных заблокированы,
чтобы предотвратить изменения во время резервного копирования.
Можно использовать один из следующих подходов к резервному копированию MariaDB
для резервного копирования данных из базы данных MariaDB:
•
•
•
•
Логическое резервное копирование с помощью mysqldump;
Физическое онлайн-резервное копирование с помощью утилиты Mariabackup;
Резервное копирование файловой системы;
Репликация как решение для резервного копирования.
Выполнение логического резервного копирования с помощью mysqldump
Клиент mysqldump - это утилита резервного копирования, которая может
использоваться для создания dump базы данных или набора баз данных с целью
резервного копирования или передачи на другой сервер баз данных. Выходные данные
mysqldump обычно состоят из инструкций SQL для повторного создания структуры
таблицы сервера, заполнения ее данными или и того, и другого. mysqldump также
может генерировать файлы в других форматах, включая XML и текстовые форматы с
разделителями, такими как CSV.
Чтобы выполнить резервное копирование mysqldump, можно использовать один из
следующих вариантов:
375
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
•
создать резервную копию одной или нескольких выбранных баз данных;
создать резервную копию всех баз данных;
создать резервное копирование подмножества таблиц из одной базы данных.
Процедура:
•
Чтобы создать dump единой базы данных, запустите:
## mysqldump [options] --databases db_name > backup-file.sql
•
Чтобы сбросить несколько баз данных одновременно, запустите:
## mysqldump [options] --databases db_name1 [db_name2 ...] > backup-file.sql
•
Чтобы сбросить все базы данных, запустите:
## mysqldump [options] --all-databases > backup-file.sql
•
Чтобы загрузить одну или несколько сброшенных полных баз данных обратно на
сервер, запустите:
## mysql < backup-file.sql
•
Чтобы загрузить базу данных на удаленный сервер MariaDB, запустите:
## mysql --host=remote_host < backup-file.sql
•
Чтобы выгрузить подмножество таблиц из одной базы данных, добавьте список
выбранных таблиц в конце команды mysqldump:
## mysqldump [options] db_name [tbl_name ...] > backup-file.sql
•
Чтобы загрузить подмножество таблиц, выгруженных из одной базы данных,
запустите:
## mysql db_name < backup-file.sql
Примечание: На данный момент должна существовать база данных db_name.
•
Чтобы просмотреть список опций, поддерживаемых mysqldump, запустите:
$ mysqldump --help
376
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Выполнение физического онлайн-бэкапа с помощью утилиты Mariabackup
Mariabackup - это утилита, основанная на технологии Percona XtraBackup, которая
позволяет выполнять физическое онлайн-резервное копирование таблиц InnoDB, Aria
и MyISAM. Эта утилита предоставляется пакетом mariadb-backup из репозитория
AppStream.
Mariabackup поддерживает полную возможность резервного копирования для сервера
MariaDB, которая включает зашифрованные и сжатые данные.
Предварительные условия:
•
Пакет mariadb-backup установлен в системе:
## yum install mariadb-backup
•
•
Должен быть предоставлены Mariabackup учетные данные пользователя, под
которым будет выполняться резервное копирование. Можно предоставить
учетные данные либо в командной строке, либо с помощью файла конфигурации.
Пользователи Mariabackup должны иметь привилегии ELOAD, LOCK TABLES и
EPLICATION CLIENT.
Чтобы создать резервную копию базы данных с помощью Mariabackup, воспользуйтесь
следующей процедурой.
Процедура:
•
Чтобы создать резервную копию при вводе учетных данных в командной строке,
запустите:
$ mariabackup --backup --target-dir <backup_directory> --user <backup_user> --password
<backup_passwd>
Параметр target-dir определяет каталог, в котором хранятся файлы резервных
копий. Если необходимо выполнить полное резервное копирование, целевой каталог
должен быть пустым или не существовать.
Параметры пользователя и пароля позволяют настроить имя пользователя и
пароль.
•
1.
2.
Для создания резервной копии с учетными данными, заданными в файле
конфигурации:
Создайте файл конфигурации в каталоге /etc/my.cnf.d/, например,
/etc/my.cnf.d/mariabackup.cnf.
Добавьте следующие строки в разделы [xtrabackup] или [mysqld] нового файла:
377
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
[xtrabackup]
user=myuser
password=mypassword
3.
Выполните резервное копирование:
$ mariabackup --backup --target-dir <backup_directory>
Примечание: Утилита Mariabackup не считывает параметры в разделе [mariadb]
файлов конфигурации. Если на сервере MariaDB указан каталог данных, отличный от
каталога по умолчанию, необходимо указать этот каталог в разделах [xtrabackup]
или [mysqld] файлов конфигурации, чтобы утилита Mariabackup могла найти каталог
данных.
Чтобы указать каталог данных, отличный от каталога данных по умолчанию,
включите следующую строку в разделы [xtrabackup] или [mysqld] файлов конфигурации
MariaDB:
datadir=/var/mycustomdatadir
Восстановление данных с помощью утилиты Mariabackup
Когда резервное копирование будет завершено, можно восстановить данные из
резервной копии с помощью команды mariabackup с одним из следующих вариантов:
•
•
–copy-back - функция обратного копирования позволяет сохранить исходные
файлы резервных копий.
–move-back - переместить-назад перемещает файлы резервных копий в
каталог данных и удаляет исходные файлы резервных копий.
Чтобы восстановить данные с помощью утилиты Mariabackup, воспользуйтесь
следующей процедурой.
Предварительные условия:
•
Убедитесь, что служба mariadb не запущена:
## systemctl stop mariadb.service
•
•
Убедитесь, что каталог данных пуст.
Пользователи Mariabackup должны иметь привилегии RELOAD, LOCK TABLES и
REPLICATION CLIENT.
Процедура:
378
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
•
Запустите mariabackup команду:
Чтобы восстановить данные и сохранить исходные файлы резервных копий,
используйте опцию –copy-back:
$ mariabackup --copy-back --target-dir=/var/mariadb/backup/
•
Чтобы восстановить данные и удалить исходные файлы резервных копий,
используйте опцию –move-back:
$ mariabackup --move-back --target-dir=/var/mariadb/backup/
2.
Исправьте права доступа к файлам.
При восстановлении базы данных Mariabackup сохраняет права доступа к файлам и
каталогам резервной копии. Однако Mariabackup записывает файлы на диск от имени
пользователя и группы, восстанавливающих базу данных. После восстановления
резервной копии может потребоваться настроить владельца каталога данных так,
чтобы он соответствовал пользователю и группе для сервера MariaDB, обычно mysql
для обоих.
Например, чтобы рекурсивно сменить владельца файлов на пользователя и группу
mysql:
## chown -R mysql:mysql /var/lib/mysql/
3.
Запустите mariadb службу:
## systemctl start mariadb.service
Выполнение резервного копирования файловой системы
Чтобы создать резервную копию файлов данных MariaDB в файловой системе,
скопируйте содержимое каталога данных MariaDB в папку для резервного
копирования.
Чтобы также создать резервную копию текущей конфигурации или файлов журнала,
воспользуйтесь дополнительными шагами следующей процедуры.
Процедура:
1.
Остановите mariadb службу:
## systemctl stop mariadb.service
379
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
2.
Скопируйте файлы данных в нужное место:
## cp -r /var/lib/mysql /backup-location
3.
При необходимости скопируйте файлы конфигурации в нужное место:
## cp -r /etc/my.cnf /etc/my.cnf.d /backup-location/configuration
4.
При необходимости скопируйте файлы журнала в нужное место:
## cp /var/log/mariadb/* /backup-location/logs
5.
Запустите службу mariadb:
## systemctl start mariadb.service
При загрузке резервных копий данных из расположения резервной копии в каталог
/var/lib/mysql убедитесь, что mysql:mysqlявляется владельцем всех данных в
/var/lib/mysql:
## chown -R mysql:mysql /var/lib/mysql
Репликация как решение для резервного копирования
Репликация - это альтернативное решение для резервного копирования исходных
серверов. Если исходный сервер реплицируется на сервер-реплику, резервные копии
могут выполняться на реплике без какого-либо воздействия на источник. Источник
все еще может работать, пока закрывается реплика и создается резервная копия
данных из реплики.
Предупреждение: Репликация сама по себе не является достаточным решением для
резервного копирования. Репликация защищает исходные серверы от аппаратных
сбоев, но не обеспечивает защиту от потери данных. Рекомендуется использовать
любое другое решение для резервного копирования на реплике вместе с этим
методом.
Репликация MariaDB с помощью Galera
В этом разделе описывается, как реплицировать базу данных MariaDB с помощью
решения Galera в Sberlinux.
Введение в кластер MariaDB Galera
380
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Репликация Galera основана на создании синхронного кластера MariaDB Galera с
несколькими исходными кодами, состоящего из нескольких серверов MariaDB. В
отличие от традиционной настройки первичного источника/реплики, где реплики
обычно доступны только для чтения, все узлы в кластере MariaDB Galera могут быть
доступны для записи.
Интерфейс между репликацией Galera и базой данных MariaDB определяется API
репликации набора записей (wsrep API).
Основными особенностями кластера MariaDB Galera являются:
•
•
•
•
•
•
•
синхронная репликация;
активный-активная топология с несколькими источниками;
чтение и запись на любой узел кластера;
автоматический контроль членства, отказавшие узлы удаляются из кластера;
автоматическое соединение узлов;
параллельная репликация на уровне строк;
прямые клиентские подключения: пользователи могут входить в систему на
узлах кластера и работать с узлами напрямую во время выполнения
репликации.
Синхронная репликация означает, что сервер реплицирует транзакцию во время
фиксации, передавая набор записей, связанный с транзакцией, на каждый узел в
кластере. Клиент (пользовательское приложение) подключается непосредственно к
системе управления базами данных (СУБД) и испытывает поведение, аналогичное
собственному MariaDB.
Синхронная репликация гарантирует, что изменение, произошедшее на одном узле
кластера, произойдет на других узлах кластера одновременно.
Таким образом, синхронная репликация имеет следующие преимущества перед
асинхронной репликацией:
•
•
•
•
•
отсутствие задержки в распространении изменений между конкретными
узлами кластера;
все узлы кластера всегда согласованы;
последние изменения не теряются при сбое одного из узлов кластера;
транзакции на всех узлах кластера выполняются параллельно;
причинно-следственная связь по всему кластеру.
Компоненты для построения кластера MariaDB Galera
Чтобы создать кластер MariaDB Galera, опционально предлагается установить в
системе следующие пакеты:
•
mariadb-server-galera - содержит файлы поддержки и скрипты для кластера
MariaDB Galera.
381
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
mariadb-server - исправляет MariaDB для включения API репликации набора
записей (wsrep API). Этот API обеспечивает интерфейс между репликацией
Galera и MariaDB.
galera- исправляется MariaDB вверх по течению, чтобы добавить полную
поддержку MariaDB. Пакет galera содержит следующее:
– Библиотека репликации Galera предоставляет всю функциональность
репликации.
– Утилита Galera Arbitrator может использоваться в качестве члена
кластера, который участвует в голосовании в сценариях с разделенным
мозгом. Однако Арбитр Galera не может участвовать в фактическом
воспроизведении.
– Служба Galera Systemd и скрипт-оболочка Galera, которые используются
для развертывания утилиты арбитра Galera. MariaDB включает версию
garbdsystemd службы SberLinux и сценарий-оболочку для galera пакета в
файлах /usr/lib/systemd/system/garbd.service и /usr/sbin/garbd-wrapper,
соответственно. MariaDB также предоставляет вышестоящую версию
этих файлов, расположенных по адресу /usr/share/doc/galera/garb-systemd
и /usr/share/doc/galera/garbd.service.
Развертывание кластера MariaDB Galera
Предварительные условия
Установите пакеты кластера MariaDB Galera, выбрав поток (версию) из mariadb
модуля и указав galera профиль.
В результате устанавливаются следующие пакеты:
•
•
•
mariadb-server-galera;
mariadb-server;
galera.
mariadb-server-galera извлекает mariadb-servergalera пакеты и в качестве своей
зависимости.
•
Конфигурация репликации сервера MariaDB должна быть обновлена перед
первым добавлением системы в кластер. Конфигурация по умолчанию
распространяется в /etc/my.cnf.d/galera.cnf файле. Перед развертыванием
кластера MariaDB Galera установите wsrep_cluster_address параметр в
/etc/my.cnf.d/galera.cnf файле на всех узлах, чтобы он начинался со следующей
строки:
gcomm://
•
Для начального узла его можно задать wsrep_cluster_address в виде пустого
списка:
382
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
wsrep_cluster_address="gcomm://"
•
Для всех остальных узлов укажите wsrep_cluster_address адрес любого узла,
который уже является частью работающего кластера. Например:
wsrep_cluster_address="gcomm://10.0.0.10"
Процедура:
1.
Загрузите первый узел нового кластера, запустив на этом узле следующую
оболочку:
## galera_new_cluster
Эта оболочка гарантирует, что демон сервера MariaDB (mysqld) запускается с –
wsrep-new-cluster опцией. Этот параметр предоставляет информацию об
отсутствии существующего кластера для подключения. Поэтому узел создает новый
UUID для идентификации нового кластера.
Примечание: Служба mariadb поддерживает метод systemd для взаимодействия с
несколькими серверными процессами MariaDB. Поэтому в случаях с несколькими
запущенными серверами MariaDB можно загрузить конкретный экземпляр, указав имя
экземпляра в качестве суффикса:
## galera_new_cluster mariadb@node1
2.
Подключите другие узлы к кластеру, выполнив следующую команду на каждом из
узлов:
## systemctl start mariadb
В результате узел подключается к кластеру и синхронизируется с состоянием
кластера.
Добавление нового узла в кластер MariaDB Galera
Чтобы добавить новый узел в кластер MariaDB Galera, используйте следующую
процедуру.
Обратите внимание, что можно использовать эту процедуру для повторного
подключения уже существующего узла.
Процедура:
383
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
На конкретном узле укажите адрес одному или нескольким существующим членам
кластера в параметре wsrep_cluster_address в [mariadb] разделе файла конфигурации /
etc/my.cnf.d/galera.cnf:
[mariadb]
wsrep_cluster_address="gcomm://192.168.0.1"
Когда новый узел подключается к одному из существующих узлов кластера, он может
видеть все узлы в кластере.
Однако предпочтительно перечислять все узлы кластера в wsrep_cluster_address.
В результате любой узел может присоединиться к кластеру, подключившись к
любому другому узлу кластера, даже если один или несколько узлов кластера не
работают. Когда все участники соглашаются с членством, состояние кластера
изменяется. Если состояние нового узла отличается от состояния кластера, новый
узел запрашивает либо инкрементную передачу состояния (IST), либо передачу
моментального снимка состояния (SST) для обеспечения согласованности с другими
узлами.
Перезапуск кластера MariaDB Galera
Если включены все узлы одновременно, работа кластера завершается, и запущенный
кластер больше не существует. Однако данные кластера все еще остаются.
Предупреждение: Если кластер не загружен и mysqld на первом узле запускается
только с помощью команды systemctl start mariadb, узел пытается подключиться по
крайней мере к одному из узлов, перечисленных в параметре wsrep_cluster_address в
файле /etc/my.cnf.d/galera.cnf. Если в данный момент ни один из узлов не запущен,
значит перезапуск завершится неудачей.
Использование PostgreSQL
Сервер PostgreSQL - это надежный и расширяемый сервер баз данных с открытым
исходным кодом, основанный на языке SQL. В этой части описывается, как
установить и настроить PostgreSQL в системе SberLinux, как создать резервную
копию данных PostgreSQL и как выполнить миграцию с более ранней версии PostgreSQL
Начало работы с PostgreSQL
Сервер PostgreSQL предоставляет объектно-реляционную систему баз данных,
которая позволяет управлять обширными наборами данных и большим количеством
одновременных пользователей. По этим причинам серверы PostgreSQL могут
использоваться в кластерах для управления большими объемами данных.
Сервер PostgreSQL включает в себя функции для обеспечения целостности данных,
создания отказоустойчивых сред и создания приложений. Это позволяет
384
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
пользователям расширять базу данных с помощью собственных типов данных
пользователей, пользовательских функций или кода с разных языков
программирования без необходимости перекомпиляции базы данных.
Установка PostgreSQL
Чтобы установить PostgreSQL, используйте следующую процедуру.
Процедура:
1.
Установите серверные пакеты PostgreSQL, выбрав поток (версию) из модуля
postgresql и указав профиль сервера. Например:
## yum module install postgresql:13/server
Суперпользователь postgres создается автоматически.
2.
Инициализируйте кластер баз данных:
## postgresql-setup --initdb
Рекомендуется хранить данные в каталоге по умолчанию /var/lib/pgsql/data.
3.
Запустите postgresql службу:
## systemctl start postgresql.service
4.
Включите запуск службы postgresql при загрузке:
## systemctl enable postgresql.service
Пользователи PostgreSQL
Пользователи PostgreSQL бывают следующих типов:
Пользователь системы postgres UNIX - должен использоваться только для запуска
сервера PostgreSQL и клиентских приложений, таких как pg_dump. Не используйте
системного пользователя postgres для какой-либо интерактивной работы по
администрированию PostgreSQL, например, для создания базы данных и управление
пользователями. Суперпользователь базы данных - суперпользователь PostgreSQL по
умолчанию не связан с системным postgres пользователем. Можно ограничить доступ
суперпользователя postgres в файле pg_hba.conf, в противном случае никаких других
ограничений разрешений не существует. Также можно создавать других
суперпользователей базы данных.
Роль с определенными правами доступа к базе данных:
385
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Пользователь базы данных - имеет разрешение на вход по умолчанию
Группа пользователей - позволяет управлять разрешениями для группы в целом.
Роли могут владеть объектами базы данных (например, таблицами и функциями) и
могут назначать привилегии объектов другим ролям с помощью команд SQL.
Стандартные привилегии управления базой данных включают SELECT, INSERT,
UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY,
EXECUTE и USAGE.
Атрибуты роли - это особые привилегии, такие как LOGIN, SUPERUSER, CREATEDB и
CREATEROLE.
Примечание: Рекомендуется выполнять большинство задач от имени роли, которая
не является суперпользователем. Обычной практикой является создание роли с
привилегиями CREATEDB и CREATEROLE и использование этой роли для всего обычного
управления базами данных и ролями.
Настройка PostgreSQL
В базе данных PostgreSQL все данные и файлы конфигурации хранятся в одном
каталоге, называемом кластером баз данных. Рекомендовано хранить все данные в
каталоге по умолчанию /var/lib/pgsql/data/.
Конфигурация PostgreSQL состоит из следующих файлов:
•
•
•
•
postgresql.conf - используется для настройки кластера базы данных.
postgresql.auto.conf- содержит базовые настройки PostgreSQL аналогично
postgresql.conf. Однако этот файл находится под управлением сервера. Он
редактируется с помощью системных запросов ALTER и не может быть
отредактирован вручную.
pg_ident.conf - используется для сопоставления идентификаторов
пользователей из внешних механизмов аутентификации с идентификаторами
пользователей PostgreSQL.
pg_hba.conf - используется для настройки аутентификации клиента для баз
данных PostgreSQL.
Чтобы изменить конфигурацию PostgreSQL, используйте следующую процедуру.
Процедура:
1.
Отредактируйте соответствующий конфигурационный файл, например,
/var/lib/pgsql/data/postgresql.conf.
2.
Перезапустите службу postgresql, чтобы изменения вступили в силу:
## systemctl restart postgresql.service
386
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Резервное копирование данных PostgreSQL
Метод SQL dump основан на создании файла dump с помощью команд SQL. Когда
dumpзагружается обратно на сервер базы данных, он воссоздает базу данных в том
же состоянии, в котором она была на момент создания dump.
dump SQL обеспечивается следующими клиентскими приложениями PostgreSQL:
•
•
pg_dump сбрасывает единую базу данных без общекластерной информации о
ролях или табличных пространствах;
pg_dumpall сбрасывает каждую базу данных в данном кластере и сохраняет
общекластерные данные, такие как определения ролей и табличных
пространств.
По умолчанию команды pg_dump и pg_dumpall записывают свои результаты в
стандартный вывод. Чтобы сохранить dump в файле, перенаправьте выходные
данные в файл SQL. Результирующий файл SQL может быть либо в текстовом
формате, либо в других форматах, которые допускают параллелизм и более
детальный контроль восстановления объекта.
Можно выполнить dump SQL с любого удаленного хоста, имеющего доступ к базе
данных.
Резервное копирование данных PostgreSQL с помощью dump SQL
Преимущества и недостатки dump** SQL**
dump SQL имеет следующие преимущества по сравнению с другими методами
резервного копирования PostgreSQL: dump SQL - это единственный метод резервного
копирования PostgreSQL, который не зависит от версии сервера. Выходные данные
утилиты pg_dump могут быть повторно загружены в более поздние версии
PostgreSQL, что невозможно для резервного копирования на уровне файловой системы
или непрерывного архивирования. dump SQL - это единственный метод, который
работает при переносе базы данных на другую машинную архитектуру, например при
переходе с 32-разрядного сервера на 64-разрядный. dump SQL предоставляет
внутренне согласованные dump. dump представляет собой моментальный снимок
базы данных на момент запуска pg_dump. Утилита pg_dump не блокирует другие
операции с базой данных во время ее запуска. Недостатком dump SQL является то,
что он занимает больше времени по сравнению с резервным копированием на уровне
файловой системы.
Выполнение dump** SQL с помощью pg_dump**
Чтобы создать dump одной базы данных без информации для всего кластера,
используйте pg_dump утилиту.
Предварительные условия:
387
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Должен быть доступ на чтение ко всем таблицам, которые необходимо сбросить.
Чтобы создать dump всей базы данных, необходимо выполнить команды от имени
postgres суперпользователя или пользователя с правами администратора базы
данных.
Процедура:
dump базы данных без информации для всего кластера:
$ pg_dump dbname > dumpfile
Чтобы указать, с каким сервером базы данных будет связываться pg_dump,
используйте следующие параметры командной строки:
•
-h Возможность определения хоста.
Хостом по умолчанию является либо локальный хост, либо тот, который указан в
переменной PGHOST среды.
•
-p Опция для определения порта.
Порт по умолчанию указывается PGPORT переменной среды или скомпилированным по
умолчанию.
Выполнение dump SQL с помощью pg_dumpall
Чтобы создать dump каждой базы данных в данном кластере баз данных и сохранить
данные всего кластера, используйте pg_dumpall утилиту.
Предварительные условия:
Необходимо запускать команды от имени postgres пользователя или пользователя с
правами администратора базы данных.
Процедура:
dump всех баз данных в кластере баз данных и сохранение данных всего кластера:
$ pg_dumpall > dumpfile
Чтобы указать, с каким сервером базы данных будет связываться pg_dumpall,
используйте следующие параметры командной строки:
•
-h Возможность определения хоста.
Хостом по умолчанию является либо локальный хост, либо тот, который указан в
переменной PGHOST среды.
388
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
-pОпция для определения порта.
Порт по умолчанию указывается PGPORT переменной среды или скомпилированным по
умолчанию.
•
-l Опция для определения базы данных по умолчанию.
Этот параметр позволяет выбрать базу данных по умолчанию, отличную от postgres
базы данных, созданной автоматически во время инициализации.
Восстановление базы данных, сброшенной с помощью pg_dump
Чтобы восстановить базу данных из dump SQL, который сбросили с помощью
утилиты pg_dump, выполните следующие действия.
Предварительные условия
•
Необходимо запускать команды от имени postgres пользователя или
пользователя с правами администратора базы данных.
Процедура
1.
Создайте новую базу данных:
$ createdb dbname
2.
Убедитесь, что все пользователи, которые владеют объектами или были
предоставлены разрешения на объекты в выгруженной базе данных, уже
существуют. Если такие пользователи не существуют, при восстановлении не
удается воссоздать объекты с первоначальным владельцем и разрешениями.
3.
Запустите утилиту psql для восстановления dump текстового файла,
созданного утилитой pg_dump:
$ psql dbname < dumpfile
где dumpfile находится выводом pg_dump команды. Чтобы восстановить dump
нетекстового файла, pg_restore используйте утилиту:
$ pg_restore non-plain-text-file
Восстановление баз данных, сброшенных с помощью pg_dumpall
Чтобы восстановить данные из кластера баз данных, которые сброшены с помощью
утилиты pg_dumpall, выполните следующие действия.
Предварительные условия:
389
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Необходимо запускать команды от имени postgres пользователя или пользователя с
правами администратора базы данных.
Процедура:
1.
Убедитесь, что все пользователи, которые владеют объектами или им были
предоставлены разрешения на объекты в выгруженных базах данных, уже
существуют. Если такие пользователи не существуют, при восстановлении не
удается воссоздать объекты с первоначальным владельцем и разрешениями.
2.
Запустите утилиту psql для восстановления dump текстового файла,
созданного pg_dumpall утилитой:
$ psql < dumpfile
где dumpfile находится выводом pg_dumpall команды.
Выполнение dump** SQL базы данных на другом сервере**
Сброс базы данных непосредственно с одного сервера на другой возможен, поскольку
pg_dump и psql могут выполнять запись и чтение из каналов.
Процедура:
Чтобы выгрузить базу данных с одного сервера на другой, выполните:
$ pg_dump -h host1 dbname | psql -h host2 dbname
Обработка ошибок SQL во время восстановления
По умолчанию psql продолжает выполняться при возникновении ошибки SQL, в
результате чего база данных восстанавливается только частично.
Чтобы изменить поведение по умолчанию, используйте один из следующих подходов
при восстановлении dump.
Предварительные условия:
Необходимо запускать команды от имени postgres пользователя или пользователя с
правами администратора базы данных.
Процедура:
•
Сделайте выход psql со статусом выхода 3, если возникает ошибка SQL,
установив ON_ERROR_STOP переменную:
$ psql --set ON_ERROR_STOP=on dbname < dumpfile
390
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
Укажите, что весь dump восстанавливается, как одна транзакция, чтобы
восстановление было завершено или отменено.
– При восстановлении dump текстового файла с помощью psql утилиты,
выполните:
$ psql -1
•
При восстановлении dump нетекстового файла с помощью pg_restore утилиты,
выполните:
$ pg_restore -e
Обратите внимание, что при использовании этого подхода даже незначительная
ошибка может отменить операцию восстановления, которая уже выполнялась в
течение многих часов.
Резервное копирование данных PostgreSQL с помощью резервной копии на уровне
файловой системы
Чтобы выполнить резервное копирование на уровне файловой системы, скопируйте
файлы базы данных PostgreSQL в другое место. Например, можно использовать любой
из следующих подходов:
•
•
•
Создайте архивный файл с помощью tar утилиты.
Скопируйте файлы в другое место с помощью rsync утилиты.
Создайте согласованный снимок каталога данных.
Преимущества и недостатки резервного копирования на уровне файловой системы
Резервное копирование на уровне файловой системы имеет следующее преимущество
по сравнению с другими методами резервного копирования PostgreSQL:
•
Резервное копирование на уровне файловой системы обычно выполняется
быстрее, чем dump SQL.
Резервное копирование на уровне файловой системы имеет следующие недостатки
по сравнению с другими методами резервного копирования PostgreSQL:
•
•
•
Резервное копирование на уровне файловой системы зависит от архитектуры и
SberLinux.
Сервер базы данных также должен быть выключен перед резервным
копированием данных и восстановлением данных.
Резервное копирование и восстановление определенных отдельных файлов или
таблиц невозможно. Резервные копии файловой системы работают только для
полного резервного копирования и восстановления всего кластера баз данных.
391
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Выполнение резервного копирования на уровне файловой системы
Чтобы выполнить резервное копирование на уровне файловой системы, используйте
следующую процедуру.
Процедура:
1.
Выберите местоположение кластера базы данных и инициализируйте этот
кластер:
## postgresql-setup --initdb
2.
Остановите службу postgresql:
## systemctl stop postgresql.service
3.
Используйте любой метод для создания резервной копии файловой системы,
например, tar архив:
$ tar -cf backup.tar /var/lib/pgsql/data
4.
Запустите службу postgresql:
## systemctl start postgresql.service
Резервное копирование данных PostgreSQL путем непрерывного архивирования
PostgreSQL записывает каждое изменение, внесенное в файлы данных базы данных, в
файл журнала предварительной записи (WAL), который доступен в подкаталоге
pg_wal/ каталога данных кластера. Этот журнал предназначен в первую очередь для
аварийного восстановления. После сбоя записи журнала, сделанные с момента
последней контрольной точки, могут быть использованы для восстановления
согласованности базы данных.
Введение в непрерывное архивирование
Метод непрерывного архивирования, также известный как оперативное резервное
копирование, объединяет файлы WAL с копией кластера баз данных в виде базовой
резервной копии, выполняемой на работающем сервере, или резервной копии на
уровне файловой системы.
Если требуется восстановление базы данных, можно восстановить базу данных из
копии кластера баз данных, а затем воспроизвести журнал из резервных копий
файлов WAL, чтобы привести систему в текущее состояние.
392
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
При использовании метода непрерывного архивирования необходимо сохранять
непрерывную последовательность всех заархивированных файлов WAL, которая
простирается как минимум до времени начала последней базовой резервной копии.
Таким образом, идеальная частота резервного копирования базы зависит от:
•
•
объема хранилища, доступного для архивированных файлов WAL;
максимально возможной продолжительности восстановления данных в
ситуациях, когда восстановление необходимо. В случаях, когда с момента
последней резервной копии прошло много времени, система воспроизводит
больше сегментов WAL, и восстановление, таким образом, занимает больше
времени.
Примечание: Не получится использовать SQL-dump pg_dump и pg_dumpall, как части
решения для непрерывного архивирования резервных копий. dump SQL создает
логические резервные копии и не содержат достаточного количества информации
для использования при воспроизведении WAL.
Преимущества и недостатки непрерывного архивирования
Непрерывное архивирование имеет следующие преимущества по сравнению с другими
методами резервного копирования PostgreSQL:
•
•
•
•
•
При использовании метода непрерывного резервного копирования можно
использовать базовую резервную копию, которая не является полностью
согласованной, поскольку любое внутреннее несоответствие в резервной копии
исправляется путем воспроизведения журнала. Таким образом, Можно
выполнить базовое резервное копирование на работающем сервере PostgreSQL.
Моментальный снимок файловой системы не требуется; достаточно tar или
аналогичной утилиты архивирования.
Непрерывное резервное копирование может быть достигнуто путем
продолжения архивирования файлов WAL, поскольку последовательность
файлов WAL для воспроизведения журнала может быть неопределенно длинной.
Это особенно ценно для больших баз данных.
Непрерывное резервное копирование поддерживает восстановление на
определенный момент времени. Нет необходимости воспроизводить записи
WAL до конца. Воспроизведение может быть остановлено в любой момент, и
база данных может быть восстановлена до своего состояния в любое время с
момента создания резервной копии базы данных.
Если серия файлов WAL постоянно доступна на другой машине, которая была
загружена с тем же базовым файлом резервной копии, можно восстановить
другую машину с помощью почти текущей копии базы данных в любой момент.
Непрерывное архивирование имеет следующие недостатки по сравнению с другими
методами резервного копирования PostgreSQL:
393
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
Метод непрерывного резервного копирования поддерживает восстановление
только всего кластера баз данных, а не подмножества.
Для непрерывного резервного копирования требуется обширное архивное
хранилище.
Настройка архивации WAL
Запущенный сервер PostgreSQL создает последовательность записей журнала
предварительной записи (WAL). Сервер физически делит эту последовательность на
файлы сегментов WAL, которым присваиваются числовые имена, отражающие их
положение в последовательности WAL. Без архивирования WAL файлы сегментов
используются повторно и переименовываются в сегменты с более высокими
номерами.
При архивировании данных WAL содержимое каждого файла сегмента захватывается
и сохраняется в новом расположении перед повторным использованием файла
сегмента. Существует несколько вариантов сохранения содержимого, например,
каталог, подключенный к NFS, на другом компьютере, на ленточном накопителе или
компакт-диске.
Обратите внимание, что записи WAL не включают изменения в файлы конфигурации.
Чтобы включить архивирование WAL, используйте следующую процедуру.
Процедура:
1.
•
•
•
2.
В файле /var/lib/pgsql/data/postgresql.conf:
Установите для параметра конфигурации wal_level значение replica или выше.
Установите для параметра archive_mode значение on.
Укажите команду командной строки в параметре конфигурации
archive_command. Можно использовать команду cp, другую команду или сценарий
оболочки.
Перезапустите службу postgresql, чтобы включить изменения:
## systemctl restart postgresql.service
3.
Протестируйте свою команду архивирования и убедитесь, что она не
перезаписывает существующий файл и что в случае сбоя она возвращает
ненулевой статус завершения.
4.
Чтобы защитить данные, убедитесь, что файлы сегмента заархивированы в
каталог, у которого нет группового или мирового доступа на чтение.
Примечание: Команда архивирования выполняется только для завершенных
сегментов WAL. Сервер, который генерирует мало трафика WAL, может иметь
значительную задержку между завершением транзакции и ее безопасной записью в
архивное хранилище. Чтобы ограничить возраст неархивированных данных, Можно:
394
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
Установить параметр archive_timeout, чтобы заставить сервер переключаться
на новый файл сегмента WAL с заданной частотой.
Использовать параметр pg_switch_wal для принудительного переключения
сегмента, чтобы гарантировать архивацию транзакции сразу после ее
завершения.
Делаем базовую резервную копию
Можно создать базовую резервную копию несколькими способами. В этом разделе
описывается простейший способ выполнения резервного копирования базы данных с
помощью утилиты pg_basebackup на работающем сервере PostgreSQL.
Процесс базового резервного копирования создает файл истории резервного
копирования, который хранится в области архива WAL и назван в честь первого
файла сегмента WAL, он нужен для базового резервного копирования.
Файл истории резервного копирования представляет собой небольшой текстовый
файл, содержащий время начала и окончания, а также сегменты WAL резервной копии.
Если использовали строку метки для идентификации связанного файла dump, можно
использовать файл истории резервного копирования, чтобы определить, какой файл
dump следует восстановить.
Примечание: Подумайте о том, чтобы сохранить несколько наборов резервных копий,
чтобы быть уверенным, что сможете восстановить свои данные.
Чтобы выполнить базовое резервное копирование, используйте следующую
процедуру.
Предварительные условия:
•
•
Должны быть выполнены команды от имени суперпользователя postgres,
пользователя с правами администратора базы данных или другого
пользователя, имеющего по крайней мере разрешения на репликацию.
Должны быть сохранены все файлы сегмента WAL, созданные во время и после
базовой резервной копии.
Процедура:
1.
•
Используйте утилиту pg_basebackup для выполнения резервного копирования
базы.
Для создания базовой резервной копии в виде отдельных файлов (обычный
формат) введите:
$ pg_basebackup -D backup_directory -Fp
Замените backup_directory на желаемое местоположение резервной копии.
395
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Если используете табличные пространства и выполняете базовое резервное
копирование на том же хосте, что и сервер, также используйте параметр –
tablespace-mapping, в противном случае резервное копирование завершится неудачей
при попытке записать резервную копию в то же самое местоположение.
•
Для создания базовой резервной копии в виде архива tar (tar и сжатый формат)
введите:
$ pg_basebackup -D backup_directory -Ft -z
Замените backup_directory на желаемое местоположение резервной копии.
Чтобы восстановить такие данные, необходимо вручную извлечь файлы в нужных
местах.
2.
После завершения процесса резервного копирования базы данных безопасно
заархивируйте копию кластера базы данных и файлы сегмента WAL,
использованные во время резервного копирования, которые указаны в файле
истории резервного копирования.
3.
Удалите сегменты WAL, число которых меньше, чем у файлов сегмента WAL,
используемых в базовой резервной копии, поскольку они старше базовой
резервной копии и больше не нужны для восстановления. Чтобы указать, с
каким сервером базы данных будет связываться pg_basebackup, используйте
следующие параметры командной строки:
•
•
параметр -h для определения хоста.
хост по умолчанию - это локальный хост или хост, указанный переменной среды
PGHOST.
Параметр -p для определения порта.
Порт по умолчанию указывается переменной среды PGPORT или
скомпилированным по умолчанию.
•
•
Восстановление базы данных с помощью непрерывного резервного копирования
архива
Чтобы восстановить базу данных с помощью непрерывной резервной копии,
используйте следующую процедуру.
Процедура:
1.
Остановите сервер:
## systemctl stop postgresql.service
2.
Скопируйте необходимые данные во временное хранилище.
396
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Предпочтительно скопировать весь каталог данных кластера и любые табличные
пространства. Обратите внимание, что для этого в системе требуется
достаточно свободного места для хранения двух копий существующей базы данных.
Если недостаточно места, сохраните содержимое каталога pg_wal кластера,
который может содержать журналы, и они не были заархивированы до сбоя системы.
3.
Удалите все существующие файлы и подкаталоги в каталоге данных кластера
и в корневых каталогах любых используемых вами табличных пространств.
4.
Восстановите файлы базы данных из базовой резервной копии.
Убедитесь, что:
•
•
•
5.
Файлы восстанавливаются с правильным владельцем (пользователь системы
базы данных, а не root).
Файлы будут восстановлены с правильными разрешениями.
Символические ссылки в подкаталоге pg_tblspc/ восстановлены правильно.
Удалите все файлы, присутствующие в подкаталоге pg_wal/.
Эти файлы были получены из базовой резервной копии и поэтому устарели. Если
pg_wal/ неархивирован, создайте его заново с соответствующими разрешениями.
6.
Скопируйте все неархивированные файлы сегмента WAL, которые сохранили на
шаге 2, в pg_wal/.
7.
Создайте файл команды восстановления recovery.conf в каталоге данных
кластера и укажите команду командной строки в параметре конфигурации
restore_command. Можно использовать команду cp, другую команду или сценарий
оболочки. Например:
restore_command = 'cp /mnt/server/archivedir/%f "%p"'
8.
Запустите сервер:
## systemctl start postgresql.service
Сервер перейдет в режим восстановления и продолжит чтение архивированных
файлов WAL, которые ему нужны.
Если восстановление прервано из-за внешней ошибки, сервер можно перезапустить, и
он продолжит восстановление. Когда процесс восстановления завершен, сервер
переименовывает recovery.conf в recovery.done. Это предотвращает случайный
повторный переход сервера в режим восстановления после запуска обычных операций
с базой данных.
397
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
9.
Проверьте содержимое базы данных, чтобы убедиться, что база данных
восстановлена в требуемом состоянии.
Если база данных не восстановилась до требуемого состояния, вернитесь к шагу 1.
Если база данных восстановилась до требуемого состояния, разрешите
пользователям подключаться, восстановив конфигурацию аутентификации клиента
в pg_hba.conf файле.
Переход на версию SberLinux PostgreSQL
Пользователи PostgreSQL в SberLinux могут использовать два пути миграции файлов
базы данных:
•
•
Быстрое обновление с помощью pg_upgrade утилиты.
Сброс и восстановление обновления.
Метод быстрого обновления выполняется быстрее, чем процесс dump и
восстановления. Однако в некоторых случаях быстрое обновление не работает, и
можно использовать только процесс dump и восстановления. Такие случаи включают:
•
•
•
Обновления кросс-архитектуры.
Системы, использующие расширения plpython или plpython2.
Быстрое обновление не поддерживается при переходе с версий PostgreSQL из
коллекций программного обеспечения Linux.
В качестве предварительного условия для перехода на более позднюю версию
PostgreSQL создайте резервные копии всех баз данных PostgreSQL.
Сброс баз данных и выполнение резервного копирования файлов SQL требуется для
процесса dump и восстановления и рекомендуется для метода быстрого обновления.
Перед переходом на более позднюю версию PostgreSQL ознакомьтесь с примечаниями
по совместимости для версии PostgreSQL, а также для всех пропущенных версий
PostgreSQL между той, откуда выполняете миграцию, и целевой версией.
Быстрое обновление с помощью утилиты pg_upgrade
Во время быстрого обновления необходимо скопировать двоичные файлы данных в
каталог /var/lib/pgsql/data/ и использовать утилиту pg_upgrade.
Следующая процедура описывает переход с системной версии Postgresql 9.2 на
SberLinux на версию PostgreSQL 8 с использованием метода быстрого обновления.
Предварительные условия:
Перед выполнением обновления создайте резервную копию всех данных, хранящихся в
базах данных PostgreSQL. По умолчанию все данные хранятся в /var/lib/pgsql/data/
каталоге.
Процедура:
398
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
В системе SberLinux включите поток (версию), на который необходимо перейти:
## yum module enable postgresql:stream
Замените stream выбранной версией сервера PostgreSQL.
Можно пропустить этот шаг, если хотите использовать поток по умолчанию,
который предоставляет PostgreSQL 10.
2.
В системе SberLinux установите пакеты postgresql-server и postgresql-upgrade:
## yum install postgresql-server postgresql-upgrade
3.
•
•
•
4.
Проверьте следующие пункты:
Базовая конфигурация: В системе SberLinux проверьте, использует ли сервер
каталог по умолчанию /var/lib/pgsql/data и правильно ли инициализирована и
включена база данных. Кроме того, файлы данных должны храниться по тому же
пути, который указан в /usr/lib/systemd/system/postgresql.service файле.
Серверы PostgreSQL: В системе может работать несколько серверов PostgreSQL.
Убедитесь, что каталоги данных для всех этих серверов обрабатываются
независимо.
Серверные модули PostgreSQL: Убедитесь, что серверные модули PostgreSQL
установлены в системе SberLinux.
Убедитесь, что служба postgresql не запущена во время копирования данных в
исходной и целевой системах.
## systemctl stop postgresql.service
5.
Скопируйте файлы базы данных из исходного местоположения в каталог
/var/lib/pgsql/data/ в системе SberLinux.
6.
Выполните процесс обновления, выполнив следующую команду от имени
пользователя PostgreSQL:
## postgresql-setup --upgrade
Это запускает процесс pg_upgrade в фоновом режиме.
В случае сбоя postgresql-setup выдает информативное сообщение об ошибке.
7.
Скопируйте предыдущую конфигурацию из /var/lib/pgsql/data-old в новый
кластер.
399
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Обратите внимание, что при быстром обновлении предыдущая конфигурация не
используется повторно в более новом стеке данных, и конфигурация создается с
нуля. Если необходимо объединить старую и новую конфигурации вручную,
используйте файлы *.conf в каталогах данных.
8.
Запустите новый сервер PostgreSQL:
## systemctl start postgresql.service
9.
Запустите analyze_new_cluster.sh скрипт, расположенный в домашнем каталоге
PostgreSQL:
su postgres -c '~/analyze_new_cluster.sh '
Если необходимо, чтобы новый сервер PostgreSQL автоматически запускался при
загрузке, запустите:
## systemctl enable postgresql.service
dump и восстановление обновления
При использовании обновления dump и восстановления необходимо сбросить все
содержимое баз данных в файл dump SQL-файла.
Обратите внимание, что обновление dump и восстановления выполняется
медленнее, чем метод быстрого обновления, и может потребоваться некоторое
ручное исправление в сгенерированном файле SQL.
В системе SberLinux данные PostgreSQL по умолчанию хранятся в каталоге
/var/lib/pgsql/data/. В случае версий PostgreSQL для коллекций программного
обеспечения Linux каталог данных по умолчанию /var/opt/rh/collection_name/lib/pgsql/data/ (за исключением postgresql92, который
использует каталог /opt/rh/postgresql92/root/var/lib/pgsql/data/).
Чтобы выполнить dump и восстановить обновление, измените пользователя на root.
Следующая процедура описывает переход с системной версии Postgresql 9.2 на
SberLinux на версию PostgreSQL 8.
Процедура:
1.
В системе SberLinux запустите сервер PostgreSQL 9.2:
## systemctl start postgresql.service
400
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
2.
В системе SberLinux сбросьте содержимое всех баз данных в файл
pgdump_file.sql-файл:
su - postgres -c "pg_dumpall > ~/pgdump_file.sql"
3.
Убедитесь, что базы данных были сброшены правильно:
su - postgres -c 'less "$HOME/pgdump_file.sql"'
В результате отображается путь к сброшенному sql-файлу:
/var/lib/pgsql/pgdump_file.sql.
4.
В системе SberLinux включите поток (версию), на который необходимо перейти:
## yum module enable postgresql:stream
5.
Замените stream выбранной версией сервера PostgreSQL.
Можно пропустить этот шаг, если хотите использовать поток по умолчанию,
который предоставляет PostgreSQL 10.
6.
В системе SberLinux установите пакет postgresql-server:
## yum install postgresql-server
7.
В системе SberLinux инициализируйте каталог данных для нового сервера
PostgreSQL:
## postgresql-setup --initdb
В системе SberLinux скопируйте файл pgdump_file.sql в домашний каталог PostgreSQL
и проверьте, что файл был скопирован правильно:
su - postgres -c 'test -e "$HOME/pgdump_file.sql" && echo exists'
8.
Скопируйте файлы конфигурации из системы SberLinux:
su - postgres -c 'ls -1 $PGDATA/*.conf'
Файлы конфигурации, которые будут скопированы, представлены ниже:
401
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
/var/lib/pgsql/data/pg_hba.conf
/var/lib/pgsql/data/pg_ident.conf
/var/lib/pgsql/data/postgresql.conf
9.
В системе SberLinux запустите новый сервер PostgreSQL:
## systemctl start postgresql.service
10. В системе SberLinux импортируйте данные из сброшенного sql-файла:
su - postgres -c 'psql -f ~/pgdump_file.sql postgres'
Введение в протоколы электронной почты
Сообщение электронной почты доставляется с использованием архитектуры
клиент/сервер. Программа почтового клиента создает сообщение электронной
почты, которое отправляется на сервер. Сообщение пересылается сервером на
почтовый сервер получателя, который затем пересылается почтовому клиенту
получателя.
Наиболее часто используемые протоколы при передаче электронной почты
классифицируются как:
•
•
Протокол транспортировки почты (Mail Transport Protocol).
– SMTP
Протокол доступа к почте (Mail Access Protocol).
– POP
– IMAP
В этой главе описываются протоколы SMTP, POP и IMAP.
SMTP
Простой протокол передачи почты (SMTP) управляет доставкой почты из
клиентского приложения на сервер и с исходного сервера на сервер назначения. В
SberLinux пользователь может настроить SMTP-сервер на локальном компьютере для
администрирования доставки почты. Можно настроить удаленные SMTP-серверы для
исходящей почты.
В SberLinux SMTP по умолчанию защищен TLS. Можно ввести ограничения на
ретрансляцию, которые не позволят случайным пользователям в Интернете
отправлять электронную почту через SMTP-сервер на другие серверы.
402
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Программы SMTP, Sendmail и Postfix доступны через репозитории AppStream и Base OS
соответственно.
POP
Протокол почтового отделения (POP) используется приложениями почтового
клиента для получения электронной почты с почтовых серверов. На POP-сервере
электронные письма загружаются приложениями почтового клиента. POP совместим
со стандартами обмена сообщениями в Интернете, такими как многоцелевые
расширения интернет-почты (MIME). Dovecot является POP-сервером по умолчанию и
предоставляется пакетом dovecot.
Шифрование Secure Socket Layer (SSL) повышает безопасность за счет
аутентификации клиента и сеансов передачи данных в POP.
Чтобы включить SSL-шифрование, используйте:
•
•
•
службу POP3
приложение stunnel
команду starttls
IMAP
Для организации и хранения электронной почты клиентские приложения протокола
доступа к сообщениям Интернета (IMAP) создают, переименовывают или удаляют
почтовые каталоги на сервере. IMAP оказывается полезным для пользователей,
получающих доступ к своей электронной почте с нескольких компьютеров.
Клиентские приложения IMAP кешируют копии сообщений локально, это позволяет
пользователям просматривать ранее прочитанные сообщения, не подключаясь к
серверу IMAP. IMAP совместим со стандартами обмена сообщениями в Интернете,
такими как многоцелевые расширения интернет-почты (MIME).
Для повышения безопасности сервера IMAP можно использовать шифрование Secure
Socket Layer (SSL) для аутентификации клиента и сеансов передачи данных. Включите
службу imaps или используйте программу stunnel для дополнительной безопасности.
В SberLinux Dovecot является сервером IMAP по умолчанию и предоставляется dovecot
пакетом.
Агент почтового транспорта
Почтовый транспортный агент (MTA) транспортирует сообщения электронной
почты между хостами с помощью SMTP. Доставка сообщений электронной почты
может включать в себя несколько MTA при достижении пункта назначения. В
процессе доставки сообщений использование MTA зависит от MTA или конфигурации
доступа в сети.
403
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Sendmail и Postfix - это два MTA, предлагаемых SberLinux.
Отправить почту
Sendmail доступен через репозиторий AppStream. Sendmail не является агентом
пользователя сообщений (MUA). Не получится просматривать входящую почту и
управлять ею через пользовательский интерфейс, но она может работать как SMTPклиент. В sendmail.mc пакет помогает перенастроить отправленную почту.
Установка Sendmail
Чтобы установить Sendmail, выполните следующие действия:
Процедура:
1.
Обновите все установленные пакеты до последней версии, чтобы все
зависимые пакеты были обновлены.
## yum update
2.
Установите Sendmail пакет.
## yum install sendmail
3.
Используйте команду sendmail для отправки электронной почты через
командную строку.
For Example:
## echo "This is a test email" | sendmail -s "Test Email"
[email protected]
Проверка:
Убедитесь, что sendmail установлен.
$ rpm -qa | grep sendmail
Постфикс
Агент передачи Postfix обрабатывает все процессы, связанные с доставкой почты.
Postfix доступен через репозиторий базовой ОС. Однако подпакеты postfix-mysql или
postfix-ldap создаются из исходного кода postfix RPM, доступного через репозиторий
Appstream.
404
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Файлы конфигурации Postfix хранятся в каталоге /etc/postfix/.
Ниже приведен список часто используемых файлов:
•
•
•
•
доступ — используется для контроля доступа и указывает хосты, которым
разрешено подключаться к Postfix.
main.cf — глобальный файл конфигурации Postfix, в котором указано множество
параметров конфигурации.
master.cf — определяет взаимодействие Postfix с различными процессами для
выполнения доставки почты.
транспорт — сопоставляет адреса электронной почты с узлами
ретрансляции. Файл псевдонимов представляет собой настраиваемый список,
требуемый почтовым протоколом, который описывает псевдонимы
идентификаторов пользователей. Он находится в каталоге /etc и совместно
используется Postfix и Sendmail.
Установка постфикса
Если пакет почтового сервера не выбран во время установки системы, Postfix по
умолчанию будет недоступен. Выполните следующие действия для установки Postfix:
Предварительные условия
•
•
Система зарегистрирована.
Отключен и удален Sendmail.
Чтобы отключить и удалить Sendmail, введите:
## yum remove sendmail
Настройка межсетевого экрана для отправки и получения электронных писем:
Процедура:
1.
Установите postfix службу.
## yum install postfix
2.
Чтобы запустить и включить postfix службу:
## systemctl start postfix
## systemctl enable postfix
Проверка:
405
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Проверьте, запущена ли postfix служба.
$ rpm -qa | grep postfix
2.
•
•
Перезапустите службу postfix в следующих сценариях:
если вывод остановлен/ожидает или не выполняется;
после изменения каких-либо параметров в файлах конфигурации в каталоге
/etc/postfix/, чтобы эти изменения вступили в силу.
## service postfix restart
Настройка постфикса
В main.cf является глобальным файлом конфигурации Postfix и задает множество
параметров конфигурации.
Процедура:
Ниже приведены несколько параметров, которые можно добавить в файл
/etc/postfix/main.cf для настройки Postfix:
1.
myhostname: - замените host.domain.tld на имя хоста почтового сервера.
For example:
myhostname = mail.example.ru
2.
mydomain: - замените домен .tld на почтовый сервер домена.
For example:
mydomain = example.ru
Примечание: При правильных настройках DNS параметры myhostname и mydomain
должны быть автоматически определены и установлены без вмешательства
пользователя.
3.
mail_spool_directory:- позволяет указать местоположение файлов почтового
ящика.
For example:
mail_spool_directory = /var/mail
406
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
4.
mynetworks: - добавьте список допустимых и доверенных удаленных SMTPсерверов. Этот параметр должен включать только IP-адреса локальной сети
или сетей, разделенных запятыми или пробелами. Добавление адресов
локальной сети позволяет избежать несанкционированного доступа к
почтовым серверам.
5.
Раскомментируйте строку inet_interfaces = all. Эта опция позволяет сделать
Postfix доступным из Интернета. С настройкой по умолчанию он будет
получать электронные письма только с локального компьютера.
6.
Прокомментируйте строку inet_interfaces = localhost. Эта опция позволяет
сделать Postfix доступным из Интернета. С настройкой по умолчанию он будет
получать электронные письма только с локального компьютера.
7.
Перезапустите службу postfix.
## systemctl reload postfix
Проверка:
Проверьте сообщения электронной почты между локальными пользователями в
системе:
## echo "This is a test message" | mail -s <SUBJECT> <[email protected]>
Нажмите Ctrl+D, чтобы отправить сообщение.
Чтобы убедиться, что открытая ретрансляция не активна на новом почтовом
сервере, отправьте электронное письмо с почтового сервера в домен, который
новый почтовый сервер не принимает почту:
hello mydomain.ru
mail from: [email protected]
rcpt to: [email protected]
554 Relay access denied - the server is not going to relay.
250 OK or similar- the server is going to relay.
The 'rcpt to' option should only accept mail addressed to addresses @mydomain.ru
Примечание: В случае ошибок проверьте файл `/var/log/maillog.
407
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Установка и настройка Dovecot для IMAP и POP3
Процессы imap-login и pop3-login, которые реализуют протоколы IMAP и POP3,
запускаются демоном master dovecot, включенным в пакет Dovecot. Использование
IMAP и POP настраивается через /etc/dovecot/dovecot.conf; по умолчанию dovecot
запускает IMAP и POP3 вместе с их защищенными версиями с использованием SSL.
Процедура:
Чтобы установить и настроить dovecot для использования IMAP, выполните
следующие действия:
1.
Установите Dovecot службу.
## yum install dovecot
2.
Включите и запустите Dovecot службу.
## systemctl enable dovecot
## systemctl start dovecot
dovecot. conf - это основной конфигурационный файл. Выполните следующие
действия, чтобы добавить несколько параметров в /etc/dovecot/dovecot.conf файл:
•
listen позволяет установить IP-адреса для прослушивания сервисов. Для
адресов IPv4 используйте звездочку (*), а для адресов IPV6 - двоеточие (: :)
For example:
listen = *, : :
•
protocols позволяет указать тип протокола.
For example:
protocols = imap, pop3
•
•
mail_location задает местоположение почты отправителя. По умолчанию этот
параметр пуст, так как Dovecot автоматически находит почту. Ниже приведен
формат параметра mail_location: почтовый ящик-формат:- [ : key = … ]
Внесите изменения в действие для текущей сессии:
408
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## systemctl restart dovecot
Проверка:
Проверьте статус Dovecot:
## doveadm instance list
Примечание: Чтобы проверить журналы, выполните следующую команду:
## journalctl -u dovecot -b
Защита Dovecot
Dovecot содержит самозаверяющие SSL-сертификаты в файле /etc/dovecot/conf.d/10ssl.conf. Поскольку у Dovecot нет сертификатов CA, при подключении к сервису
поступает предупреждающее сообщение. Убедитесь, что порты SMTP, IMAP, SSL/TLS
IMAP открыты по умолчанию и POP3, используя следующую команду:
## firewall-cmd --permanent --add-port=110/tcp --add-port=995/tcp
## firewall-cmd --permanent --add-port=143/tcp --add-port=993/tcp
## firewall-cmd --reload
Примечание: Чтобы проверить журналы на наличие проблем, связанных с Dovecot,
используйте следующую команду journalctl:
## journalctl -u dovecot -b
Настройка межсетевого экрана для отправки и получения электронной почты
Настройте межсетевой экран для отправки и получения электронных писем,
выполнив следующие действия:
Процедура:
1.
Чтобы добавить услугу, введите:
## firewall-cmd --permanent --add-service=servicename
409
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
2.
Замените имя службы на любую из служб в каталоге /etc/services. Например,
smtp, отправка.
3.
Перезагрузите службу, чтобы изменения вступили в силу:
## systemctl reload firewalld
Защита электронной почты с помощью SSL
Можно обезопасить общение по электронной почте с помощью самоподписанной
сертификации. Сертификация SSL может быть выполнена 2 способами:
1 обратившись в центр сертификации (CA) за сертификатом SSL; 2 путем создания
самозаверяющего сертификата.
Процедура:
1.
Выполните следующие действия, чтобы создать самозаверяющий SSLсертификат для IMAP или POP.
2.
Отредактируйте параметры сертификата в файле /etc/pki/dovecot/dovecotopenssl.cnf по своему усмотрению и введите следующую команду:
## rm -f certs/dovecot.pem private/dovecot.pem# /usr/libexec/dovecot/mkcert.sh
2.
Убедитесь, что есть следующие конфигурации в /etc/dovecot/conf.d/10-ssl.conf
файле:
ssl_cert = </etc/pki/dovecot/certs/dovecot.pemssl_key = </etc/pki/dovecot/private/dovecot.pem
3.
Выполните следующую команду, чтобы перезапустить демон dovecot:
## systemctl restart dovecot
Настройка печати
Печать в SberLinux основана на общей системе печати Unix (CUPS).
В этой документации описывается, как настроить систему для работы в качестве
сервера CUPS.
Активация услуги cups
В этом разделе описывается, как активировать службу cups в системе.
410
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Предварительные условия:
1.
Пакет cups, который доступен в репозитории Appstream, должен быть
установлен в системе:
## yum install cups
Процедура:
1.
Запустите cups службу:
## systemctl start cups
2.
Настройте службу cups для автоматического запуска во время загрузки:
## systemctl enable cups
3.
При необходимости проверьте статус cups службы:
$ systemctl status cups
Инструменты настройки печати
Для выполнения различных задач, связанных с печатью, можно выбрать один из
следующих инструментов:
•
Веб-пользовательский интерфейс CUPS (UI)
Задачи, которые можно выполнить с помощью упомянутых выше инструментов,
включают:
•
•
•
добавление и настройка нового принтера;
поддержание конфигурации принтера;
управление классами принтеров.
Доступ и настройка веб-интерфейса CUPS
В этом разделе описывается доступ к веб-пользовательскому интерфейсу CUPS (web
UI) и его настройка для управления печатью через этот интерфейс.
Процедура:
1.
Разрешите серверу CUPS прослушивать соединения из сети, установив порт
631 в /etc/cups/cupsd.conf файле:
411
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
#Listen localhost:631Port 631
Предупреждение: Включение прослушивания сервером CUPS порта 631 открывает
этот порт для любого адреса, доступного серверу. Поэтому используйте этот
параметр только в локальных сетях, которые недоступны из внешней сети. Не
рекомендуется настраивать CUPS server на общедоступном сервере.
2.
Разрешите системе получить доступ к серверу CUPS, включив следующую
директиву в /etc/cups/cupsd.conf файл:
<Location />Allow from <your_ip_address>Order allow,deny</Location>
Где your_ip_address - это реальный IP-адрес системы. Также можно использовать
регулярные выражения для подсетей.
Предупреждение: Конфигурация CUPS предлагает директиву Allow from all в тегах
Location, но не рекомендуется использовать эту директиву только в доверенных
сетях. Настройка Allow from all обеспечивает доступ для всех пользователей,
которые могут подключаться к серверу через порт 631. Если задаете директиве
порта значение 631, а сервер доступен из внешней сети, любой пользователь
Интернета может получить доступ к службе CUPS в системе.
3.
Перезапустите cups.service службу:
## systemctl restart cups
3.
Откройте свой браузер и перейдите по адресу http://:631/.
Рисунок. Введение в пользовательский интерфейс cups
Доступны все меню, за исключением меню администрирования.
Если нажмете на меню администрирования, получите запрещенное сообщение:
412
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Рисунок. Запрещенное сообщение
Получение административного доступа к веб-интерфейсу CUPS
В этом разделе описывается, как получить административный доступ к вебинтерфейсу CUPS.
Процедура:
1.
Чтобы иметь возможность получить доступ к меню администрирования в вебинтерфейсе CUPS, включите следующие строки в файл /etc/cups/cupsd.conf:
<Location /admin>Allow from <your_ip_address>Order allow,deny</Location>
Примечание: Замените реальным IP-адресом системы.
2.
Чтобы иметь доступ к файлам конфигурации в веб-интерфейсе CUPS, включите
следующее в файл /etc/cups/cupsd.conf:
<Location /admin/conf>AuthType DefaultRequire user @SYSTEMAllow from <your_ip_address>Order
allow,deny</Location>
Примечание: Замените реальным IP-адресом системы.
3.
Чтобы иметь доступ к файлам журнала в веб-интерфейсе CUPS, включите
следующее в файл /etc/cups/cupsd.conf:
<Location /admin/log>AuthType DefaultRequire user @SYSTEMAllow from <your_ip_address>Order
allow,deny</Location>
Примечание: Замените реальным IP-адресом системы.
4.
Чтобы указать использование шифрования для аутентифицированных запросов
в веб-интерфейсе CUPS, включите DefaultEncryption в файл /etc/cups/cupsd.conf:
DefaultEncryption IfRequested
413
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
С помощью этого параметра можно получить окно аутентификации для ввода имени
пользователя, которому разрешено добавлять принтеры, при попытке доступа к
меню администрирования. Однако существуют и другие варианты того, как
установить DefaultEncryption. Для получения более подробной информации смотрите
справочную страницу cupsd.conf.
5.
Перезапустите службу cups:
## systemctl restart cups
Предупреждение: Если не перезапустите службу cups, изменения в /etc/cups/cupsd.conf
применяться не будут. Следовательно, не получите административный доступ к
веб-интерфейсу CUPS.
Настройка бездрайверной печати
Как администратор, можно настроить печать без драйвера для использования
принтеров или удаленных очередей CUPS без какого-либо специального программного
обеспечения.
SberLinux обеспечивает поддержку печати без драйверов для следующих стандартов
без драйверов:
•
•
IPP Everywhere model поддерживает стандарты AirPrint, IPP Everywhere и Wi-Fi
Direct.
Driverless model в cups-filters поддерживает те же стандарты, что и CUPS, и,
кроме того, формат документа PCLm.
Эти стандарты используют Internet Printing Protocol (IPP) 2.0 или более поздней
версии для передачи настроек принтера и устраняют необходимость установки
специальных драйверов для конкретных принтеров. Чтобы использовать принтер без
определенного драйвера, необходимо иметь принтер, поддерживающий один из
стандартов без драйверов. Чтобы определить, поддерживает ли принтер стандарт
без драйверов, выберите один из следующих вариантов:
•
•
•
Обратитесь к спецификации принтера и найдите стандартную поддержку без
драйверов или обратитесь к своему поставщику.
Ищите сертифицированные принтеры.
Определите поддержку без драйверов на основе атрибутов принтера с
помощью команды ipptool.
Чтобы установить очередь печати на клиенте с моделью IPP Everywhere, которая
указывает на очередь на сервере печати, необходимо иметь как удаленный сервер
печати, так и клиент с установкой SberLinux.
Примечание: Можно проверить поддержку без драйверов на основе атрибутов
сервера печати с помощью команды ipptool.
414
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Определение атрибутов принтера с помощью ipptool
Чтобы определить, поддерживает ли принтер или сервер печати стандарт без
драйверов, можно проверить атрибуты принтера с помощью команды ipptool*
доступной в пакете ipptool**.
Процедура:
Отобразите атрибуты принтера или сервера печати:
$ ipptool -tv <URI> get-printer-attributes.test
Примечание: Замените на URI принтера, например ipp://:631/ipp/printing for printers
или ipp://:631/printers/ для удаленных очередей печати с серверов печати.
Принтер или сервер печати поддерживают печать без драйвера, если:
•
•
атрибут, поддерживаемый версией IPP, содержит версию 2.0 или выше для
протокола IPP 2.0;
атрибут, поддерживаемый форматом документа, содержит один из
поддерживаемых форматов документов, перечисленных в стандартах печати
без драйверов.
Добавление принтера без драйверов в веб-интерфейсе CUPS
Можно добавить принтер без драйверов в веб-интерфейс CUPS и использовать его
для печати непосредственно из приложения на сетевых принтерах или серверах
печати с использованием CUPS, без установки каких-либо специальных драйверов или
программного обеспечения для конкретных принтеров.
Предварительные условия:
•
•
•
•
•
Существует административный доступ к веб-интерфейсу CUPS.
Принтер или сервер печати имеет стандартную реализацию IPP Everywhere.
Открыт порт IPP: порт 631 для IPP или порт 443 для безопасной печати с
помощью IPPS.
Включена связь ipp и ipp-клиента в межсетевом экране сервера печати.
Если пунктом назначения является другой сервер CUPS, разрешите удаленный
доступ на удаленном сервере или, если используете сетевой принтер,
откройте веб-интерфейс пользователя, найдите параметры, связанные с IPP:
IPP или AirPrint, и включите эти параметры.
Процедура:
1.
Запустите веб-интерфейс CUPS.
2.
В браузере перейдите на localhost:631 и выберите вкладку Administration.
415
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
В разделе Printers нажмите кнопку Add printer.
Рисунок. Добавить принтер в cups ui 2
4.
Аутентифицируйтесь с помощью имени пользователя и пароля.
Рисунок. Добавить принтер в cups ui auth n
Примечание: Чтобы добавить новый принтер с помощью веб-интерфейса CUPS,
необходимо пройти аутентификацию как пользователь, который принадлежит к
группе, определенной директивой SystemGroup в /etc/cups/cups-files. Группами по
умолчанию являются:
•
•
•
root
sys
wheel
416
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
5.
•
•
6.
На вкладке Administrator в разделе Add Printer выберите один из вариантов:
Internet Printing Protocol (ipp);
Internet Printing Protocol (ipps) и нажмите кнопку Continue.
В поле Connection введите URI устройства и нажмите кнопку Continue.
Примечание: URI состоит из следующих частей:
•
протокол ipp:// или ipps:// если принтер или сервер печати поддерживают
шифрование:
–
–
–
имени хоста или IP-адрес принтера;
порта;
части ресурса /ipp/printдля принтеров или /printers/ для удаленных
очередей CUPS.
Например: ipp://myprinter.mydomain:631/ipp/print или
ipp://myserver.mydomain:631/printers/myqueue.
7.
Добавьте сведения о новом принтере: название, описание и местоположение.
Чтобы настроить общий доступ к принтеру по сети, установите флажок возле
раздела Share this printer.
Примечание: Имя - единственное обязательное поле, остальные поля необязательны.
8.
В раскрывающемся меню Make выберите производителя принтера и нажмите
Continue.
9.
Чтобы продолжить установку принтера без драйвера, в выпадающем меню
выберите IPP Everywhere и нажмите Add Printer.
10. После добавления нового принтера можно установить параметры печати по
умолчанию по выбору.
417
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Рисунок. Веб-интерфейс cups устанавливает значения по умолчанию n2
Последнее окно подтверждает, что установлен принтер без драйвера и он готов к
использованию.
Добавление принтера с классическим драйвером в веб-интерфейсе CUPS
В этом разделе описывается, как добавить новый принтер с помощью вебинтерфейса пользователя CUPS.
Предварительные условия:
Существует административный доступ к веб-интерфейсу CUPS.
Процедура:
1.
Запустите веб-интерфейс CUPS.
2.
В браузере перейдите на localhost:631 и выберите вкладку Administration.
3.
В разделе Printers нажмите кнопку Add printer.
Рисунок. Добавить принтер в cups ui 2
4.
Аутентифицируйтесь по имени пользователя и паролю:
418
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Рисунок. Добавить принтер в cups ui auth n
Примечание: Чтобы добавлять новый принтер с помощью веб-интерфейса CUPS,
необходимо пройти аутентификацию как пользователь, который принадлежит к
группам, определенным директивой SystemGroup в /etc/cups/cups-files.
Группы по умолчанию:
•
•
•
5.
root
sys
wheel
Если подключен локальный принтер или CUPS находит доступный сетевой
принтер, выберите принтер. Если ни локальный, ни сетевой принтер не
доступны, выберите один из типов принтеров из других сетевых принтеров
(Other Network Printers), например APP Socket/HP Jet direct, введите IP-адрес
принтера, а затем нажмите Continue.
6.
Если выбран, например, APP Socket/HP Jet direct, как показано выше, введите IPадрес принтера, а затем нажмите Continue.
7.
Можно добавить дополнительные сведения о новом принтере, такие как
название, описание и местоположение. Чтобы настроить общий доступ к
принтеру по сети, установите флажок Share This Printer.
8.
Выберите производителя принтера, а затем нажмите Continue.
При необходимости можно предоставить файл описания принтера postscript (PPD),
который будет использоваться в качестве драйвера для принтера, нажав внизу
кнопку Browse….
9.
Выберите модель принтера, а затем нажмите кнопку Add Printer.
419
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
10. После добавления принтера в следующем окне можно задать параметры
печати по умолчанию.
Рисунок. Веб-интерфейс cups устанавливает значения по умолчанию n2
11. После нажатия кнопки Set Default Options получите подтверждение того, что
новый принтер был успешно добавлен.
Рисунок. Добавить принтер в cups ui окончательное подтверждение
Этапы проверки:
Распечатайте тестовую страницу:
Перейдите в меню Printers и выберите Maintenance → Print Test Page.
Настройка принтера в веб-интерфейсе CUPS
В этом разделе описывается, как настроить новый принтер и как поддерживать
конфигурацию принтера с помощью веб-интерфейса CUPS.
Предварительные условия:
Существует административный доступ к веб-интерфейсу CUPS, как описано в
разделе Получение административного доступа к веб-интерфейсу CUPS.
Процедура:
420
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Нажмите меню Printers, чтобы просмотреть доступные принтеры, которые
можно настроить.
2.
Выберите один принтер, который нужно настроить.
3.
Выполните выбранную вами задачу, используя одно из доступных меню:
•
•
Выберите Maintenance в первом выпадающем меню.
Выберите Administration во втором выпадающем меню.
Также можно проверить выполненные задания печати или все активные задания
печати, нажав кнопки Show Completed Jobs или Show All Jobs.
Этапы проверки:
Распечатайте тестовую страницу:
Перейдите в меню Printers и выберите Maintenance → Print Test Page.
Настройка параметров печати с помощью веб-интерфейса CUPS
В этом разделе описывается, как настроить общие параметры печати, такие как
размер и тип носителя, качество печати или цветовой режим, в веб-интерфейсе
CUPS.
Предварительные условия:
Существует административный доступ к веб-интерфейсу CUPS.
Процедура:
1.
Перейдите в меню администрирования и выберите Maintenance → Set Default
Options.
Рисунок. Веб-интерфейс cups устанавливает значения по умолчанию n1
421
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
2.
Установите параметры печати.
Рисунок. Веб-интерфейс cups устанавливает значения по умолчанию n2
Установка сертификатов для сервера печати
Чтобы установить сертификаты для сервера печати, можно выбрать один из
следующих вариантов:
•
•
автоматическую установку с использованием самозаверяющего сертификата;
установку вручную с использованием сертификата и закрытого ключа,
сгенерированного центром сертификации.
Предварительные условия:
Для демона cupsd на сервере:
1.
Установите следующую директиву в /etc/cups/cupsd.conf файле:
Encryption Required
2.
Перезапустите cups службу:
$ sudo systemctl restart cups
Автоматическая установка с использованием самозаверяющего сертификата
С помощью этой опции CUPS автоматически генерирует сертификат и ключ.
Примечание: Самозаверяющий сертификат не обеспечивает такой надежной защиты,
как сертификаты, созданные центрами сертификации Identity Management (IdM),
Active Directory (AD), но его можно использовать для серверов печати, расположенных
в защищенной локальной сети.
422
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Процедура:
1.
Чтобы получить доступ к веб-интерфейсу CUPS, откройте свой браузер и
перейдите по ссылке https://:631
Где server - это либо IP-адрес сервера, либо имя хоста сервера.
Примечание: Когда CUPS подключается к системе в первый раз, браузер показывает
предупреждение о том, что самозаверяющий сертификат представляет
потенциальную угрозу безопасности.
2.
Чтобы подтвердить, что продолжить безопасно, нажмите кнопку Advanced…
Рисунок. Предупреждение о сертификате пользовательского интерфейса cups
3.
Нажмите кнопку Accept the Risk and Continue.
CUPS начнет использовать самогенерированный сертификат и ключ.
Примечание: Когда получен доступ к веб-интерфейсу CUPS после автоматической
установки, браузер отображает значок предупреждения в адресной строке. Это
связано с тем, что добавлено исключение безопасности, подтвердив предупреждение
об угрозе безопасности. Если необходимо удалить этот предупреждающий значок
навсегда, выполните установку вручную с помощью сертификата и закрытого ключа,
сгенерированного центром сертификации.
Установка вручную с использованием сертификата и закрытого ключа,
сгенерированного центром сертификации
Для серверов печати, расположенных в общедоступной сети, или для постоянного
удаления предупреждения в браузере импортируйте сертификат и ключ вручную.
Предварительные условия:
Существуют файлы сертификатов и закрытых ключей, созданные IdM, AD.
Процедура:
423
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Скопируйте файлы .crt и .keyв каталог /etc/cups/ssl системы, в которой
необходимо использовать веб-интерфейс CUPS.
2.
Переименуйте скопированные файлы в hostname.crt и hostname.key.
Замените hostname именем хоста системы, к которой необходимо подключить вебинтерфейс CUPS.
3.
Установите следующие разрешения для переименованных файлов:
* # chmod 644 /etc/cups/ssl/<hostname>.crt
* # chmod 644 /etc/cups/ssl/<hostname>.key
* # chown root:root /etc/cups/ssl/<hostname>.crt
* # chown root:root /etc/cups/ssl/<hostname>.key
Перезапустите cups службу:
## systemctl restart cupsd
Использование samba для печати на сервер печати Windows с проверкой
подлинности Kerberos
С помощью оболочки samba-krb5-printing пользователи Active Directory (AD), вошедшие
в SberLinux, могут пройти аутентификацию в Active Directory (AD) с помощью Kerberos,
а затем выполнить печать на локальном сервере печати CUPS, который
перенаправляет задание печати на сервер печати Windows.
Преимущество этой конфигурации заключается в том, что администратору CUPS в
SberLinux не нужно сохранять фиксированное имя пользователя и пароль в
конфигурации. CUPS аутентифицируется в AD с помощью тикета Kerberos
пользователя, отправившего задание на печать.
В этом разделе описывается, как настроить CUPS для этого сценария.
Предварительные условия:
Принтер, который нужно добавить в локальный экземпляр CUPS, является общим на
сервере печати AD.
Получено присоединение к хостингу SberLinux в качестве участника AD.
CUPS установлен и служба cups запущена.
Файл описания принтера PostScript (PPD) для принтера хранится в каталоге
/usr/share/cups/model/.
Процедура:
424
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Установите пакеты samba-krb5-printing, samba-client и krb5-workstation:
## yum install samba-krb5-printing samba-client krb5-workstation
2.
При необходимости аутентифицируйтесь как администратор домена и
отобразите список принтеров, которые совместно используются на сервере
печати Windows:
## smbclient -L win_print_srv.ad.example.ru -U administrator@AD_KERBEROS_REALM --usekerberos=required
Sharename Type Comment
--------- ---- ------...
Example
Printer Example
...
3.
При необходимости отобразите список моделей CUPS, чтобы определить
название PPD принтера:
lpinfo -m
...
samsung.ppd Samsung M267x 287x SeriesPXL
...
Потребуется имя файла PPD при добавлении принтера на следующем шаге.
4.
Добавьте принтер в CUPS:
## lpadmin -p "example_printer" -v smb://win_print_srv.ad.example.ru/Example -m samsung.ppd -o
auth-info-required=negotiate -E
Команда использует следующие параметры:
•
•
•
•
•
-p имя_принтера задает имя принтера в CUPS.
-v URI_to_Windows_printer задает URI для принтера Windows. Используйте
следующий формат: smb://host_name/printer_share_name.
-m PPD_file задает файл PPD, используемый принтером.
-o auth-info-required=negotiate настраивает CUPS на использование
аутентификации Kerberos при пересылке заданий печати на удаленный сервер.
-E включает принтер, и CUPS принимает задания для принтера.
Этапы проверки:
425
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Войдите на хост SberLinux как пользователь домена AD.
2.
Аутентифицируйтесь как пользователь домена AD:
## kinit domain_user_name@AD_KERBEROS_REALM
3.
Распечатайте файл на принтере, который был добавлен на локальный сервер
печати CUPS:
## lp -d example_printer file
Работа с логами CUPS
Типы журналов CUPS
CUPS предлагает три различных вида CUPS logs:
•
•
•
Error log (Журнал ошибок) - хранит сообщения об ошибках, предупреждения и
отладочные сообщения.
Access log (Журнал доступа) - хранит сообщения о том, сколько раз
осуществлялся доступ к клиентам CUPS и веб-интерфейсу.
Page log (Журнал страниц) - хранит сообщения об общем количестве страниц,
напечатанных для каждого задания печати.
Доступ ко всем журналам CUPS
Можно перечислить все журналы CUPS, доступные в systemd-journald.
Процедура:
Отфильтруйте CUPS logs:
$ journalctl -u cups
Доступ к журналам CUPS для определенного задания на печать
Если нужно найти журнал CUPS для определенного задания печати, можно сделать
это, отфильтровав журналы по номеру задания печати.
Процедура:
Отфильтруйте журналы для конкретного задания печати:
$ journalctl -u - JID=N
426
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Где N- номер задания на печать.
Доступ к журналам CUPS за определенный период времени
Если нужно получить доступ к журналам CUPS в течение определенного периода
времени, можно отфильтровать журналы в systemd-journald.
Процедура:
Фильтровать журналы в течение указанного периода времени:
$ journalctl -u cups --since=YYYY-MM-DD --until=YYYY-MM-DD
Где YYYY - год, ММ - месяц, а DD - день.
Настройка расположения журнала CUPS
В этом разделе описывается, как настроить расположение журналов CUPS.
В SberLinux журналы CUPS по умолчанию регистрируются в systemd-journald, что
обеспечивается следующей настройкой по умолчанию в /etc/cups/cups-files.conf файле:
ErrorLog syslog
Примечание: Рекомендуется сохранять расположение журналов CUPS по умолчанию.
Если необходимо отправить журналы в другое место, необходимо изменить
настройки в файле /etc/cups/cups-files.conf следующим образом:
ErrorLog <your_required_location>
Предупреждение: Если измените расположение журнала CUPS по умолчанию, могут
возникнуть проблемы с SELinux.
Управление, мониторинг и обновление ядра
Следующие разделы содержат информацию о ядре Linux и RPM-пакете ядра Linux.
Неотъемлемой частью этой главы является инструкция о том, как обновлять ядро,
что гарантирует наличие в операционной системе всех последних исправлений
ошибок, улучшений производительности и фиксов, а также ее совместимость с новым
оборудованием.
Ядро Linux
Ядро — это основная часть операционной системы Linux, которая управляет
системными ресурсами и обеспечивает интерфейс между аппаратными и
427
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
программными приложениями. Ядра упакованы в формате RPM, поэтому они легко
обновляются и проверяются менеджером пакетов yum.
Пакет RPM
Пакет RPM — это файл, содержащий другие файлы и их метаданные (информацию о
файлах, которые необходимы системе). В частности, пакет RPM состоит из cpio
архива.
В cpio архиве есть:
•
•
файлы;
заголовок RPM (метаданные пакета) Диспетчер rpm пакетов использует эти
метаданные для определения зависимостей, места установки файлов и другой
информации.
Типы пакетов RPM
Существует два типа пакетов RPM. Оба типа имеют общий формат файла и
инструменты, но имеют разное содержимое и служат разным целям:
•
•
Исходный оборот в минуту (SRPM) SRPM содержит исходный код и файл SPEC, в
котором описывается, как встроить исходный код в двоичный RPM. При
желании также включены исправления для исходного кода.
Двоичный об/мин Бинарный RPM содержит бинарные файлы, созданные из
исходников и патчей.
Обзор RPM-пакета ядра Linux
RPM — это метапакет kernel, который не содержит никаких файлов, а скорее
обеспечивает правильную установку следующих необходимых подпакетов:
•
•
kernel-core — содержит двоичный образ ядра, все объекты, связанные с initramfs,
для начальной загрузки системы и минимальное количество модулей ядра для
обеспечения функциональности ядра. Только этот подпакет можно
использовать в виртуализированных и облачных средах, чтобы обеспечить ядро
SberLinux быстрой загрузкой и небольшим размером диска.
kernel-modules — содержит остальные модули ядра, которых нет в kernel-core.
Небольшой набор вышеперечисленных подпакетов призван предоставить системным
администраторам уменьшенную область обслуживания, особенно в
виртуализированных и облачных средах.
Необязательные пакеты ядра, например:
•
kernel-modules-extra — содержит модули ядра для редкого оборудования и
модули, загрузка которых отключена по умолчанию.
428
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
•
•
•
kernel-debug — содержит ядро с включенными многочисленными опциями
отладки для диагностики ядра за счет снижения производительности.
kernel-tools — содержит инструменты для управления ядром Linux и
сопроводительную документацию.
kernel-devel — содержит заголовки ядра и make-файлы, достаточные для сборки
модулей из kernel пакета.
kernel-abi-stablelists — содержит информацию, относящуюся к ABI ядра
SberLinux, включая список символов ядра, которые необходимы внешним модулям
ядра Linux, и yum подключаемый модуль для обеспечения соблюдения.
kernel-headers— включает файлы заголовков C, которые определяют интерфейс
между ядром Linux и библиотеками и программами пользовательского
пространства. Файлы заголовков определяют структуры и константы,
необходимые для построения большинства стандартных программ.
Отображение содержимого пакета ядра
Следующая процедура описывает, как просмотреть содержимое пакета ядра и его
подпакетов без их установки с помощью команды.
Предварительные условия:
•
Получены kernel, kernel-core, kernel-modules, kernel-modules-extra пакеты RPM
для архитектуры ЦП
Процедура
•
Список модулей для kernel:
$ rpm -qlp <kernel_rpm>
(contains no files)
...
•
Список модулей для kernel-core:
$ rpm -qlp <kernel-core_rpm>
...
/lib/modules/4.18.0-80.el8.x86_64/kernel/fs/udf/udf.ko.xz
/lib/modules/4.18.0-80.el8.x86_64/kernel/fs/xfs
/lib/modules/4.18.0-80.el8.x86_64/kernel/fs/xfs/xfs.ko.xz
/lib/modules/4.18.0-80.el8.x86_64/kernel/kernel
/lib/modules/4.18.0-80.el8.x86_64/kernel/kernel/trace
/lib/modules/4.18.0-80.el8.x86_64/kernel/kernel/trace/ring_buffer_benchmark.ko.xz
/lib/modules/4.18.0-80.el8.x86_64/kernel/lib
/lib/modules/4.18.0-80.el8.x86_64/kernel/lib/cordic.ko.xz
...
429
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
Список модулей для kernel-modules:
$ rpm -qlp <kernel-modules_rpm>
...
/lib/modules/4.18.0-80.el8.x86_64/kernel/drivers/infiniband/hw/mlx4/mlx4_ib.ko.xz
/lib/modules/4.18.0-80.el8.x86_64/kernel/drivers/infiniband/hw/mlx5/mlx5_ib.ko.xz
/lib/modules/4.18.0-80.el8.x86_64/kernel/drivers/infiniband/hw/qedr/qedr.ko.xz
/lib/modules/4.18.0-80.el8.x86_64/kernel/drivers/infiniband/hw/usnic/usnic_verbs.ko.xz
/lib/modules/4.18.0-80.el8.x86_64/kernel/drivers/infiniband/hw/vmw_pvrdma/vmw_pvrdma.ko.xz
...
•
Список модулей для kernel-modules-extra:
$ rpm -qlp <kernel-modules-extra_rpm>
...
/lib/modules/4.18.0-80.el8.x86_64/extra/net/sched/sch_cbq.ko.xz
/lib/modules/4.18.0-80.el8.x86_64/extra/net/sched/sch_choke.ko.xz
/lib/modules/4.18.0-80.el8.x86_64/extra/net/sched/sch_drr.ko.xz
/lib/modules/4.18.0-80.el8.x86_64/extra/net/sched/sch_dsmark.ko.xz
/lib/modules/4.18.0-80.el8.x86_64/extra/net/sched/sch_gred.ko.xz
...
Обновление ядра
Следующая процедура описывает, как обновить ядро с помощью менеджера пакетов
yum.
Процедура:
Чтобы обновить ядро, введите следующую команду:
## yum update kernel
Эта команда обновляет ядро вместе со всеми зависимостями до последней
доступной версии.
Перезагрузите систему, чтобы изменения вступили в силу.
Установка определенных версий ядра
Следующая процедура описывает, как установить новые ядра с помощью менеджера
пакетов yum.
Процедура:
430
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Чтобы установить конкретную версию ядра, введите следующую команду:
## yum install kernel-{version}
Управление модулями ядра
В следующих разделах объясняется, что такое модули ядра, как отображать
информацию о них и как выполнять основные административные задачи с модулями
ядра.
Введение в модули ядра
Ядро SberLinux может быть дополнено необязательными дополнительными
функциями, называемыми модулями ядра, без перезагрузки системы. В SberLinux
модули ядра представляют собой дополнительный код ядра, встроенный в сжатые
.ko.xz объектные файлы.
Наиболее распространенные функции, предоставляемые модулями ядра:
•
•
•
Драйвер устройства, добавляющий поддержку нового оборудования;
Поддержка файловой системы, такой как GFS2 или NFS;
Системные вызовы.
В современных системах модули ядра загружаются автоматически по мере
необходимости. Однако в некоторых случаях необходимо загружать или выгружать
модули вручную.
Как и само ядро, модули могут принимать параметры, которые при необходимости
настраивают их поведение.
Предоставляются инструменты для проверки того, какие модули запущены в данный
момент, какие модули доступны для загрузки в ядро и какие параметры принимает
модуль. Инструмент также предоставляет механизм для загрузки и выгрузки модулей
ядра в работающее ядро.
Зависимости модуля ядра
Некоторые модули ядра иногда зависят от одного или нескольких других модулей
ядра. Файл /lib/modules//modules.dep содержит полный список зависимостей модулей
ядра для соответствующей версии ядра.
Файл зависимостей генерируется depmod программой, входящей в состав kmod
пакета. Многие из предоставляемых утилит kmod учитывают зависимости модулей
при выполнении операций, поэтому ручное отслеживание зависимостей требуется
редко.
431
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Предупреждение: Код модулей ядра выполняется в пространстве ядра в
неограниченном режиме. Из-за этого помните о том, какие модули загружаете.
Список установленных модулей ядра
Команда grubby –info=ALL отображает проиндексированный список установленных
ядер !BLS, а BLS устанавливает.
Процедура:
Перечислите установленные ядра, используя следующую команду:
## grubby --info=ALL | grep title
Список загруженных в данный момент модулей ядра
Следующая процедура описывает, как просмотреть загруженные в данный момент
модули ядра.
Предварительные условия:
Пакет kmod установлен.
Процедура
•
Чтобы получить список всех загруженных на данный момент модулей ядра,
выполните:
$ lsmod
Module
Size Used by
fuse
126976 3
uinput
20480 1
xt_CHECKSUM
16384 1
ipt_MASQUERADE
16384 1
xt_conntrack
16384 1
ipt_REJECT
16384 1
nft_counter
16384 16
nf_nat_tftp
16384 0
nf_conntrack_tftp 16384 1 nf_nat_tftp
tun
49152 1
bridge
192512 0
stp
16384 1 bridge
llc
16384 2 bridge,stp
nf_tables_set
32768 5
432
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
nft_fib_inet
...
16384 1
В приведенном выше примере:
•
•
•
Первый столбец содержит имена загруженных в данный момент модулей.
Во втором столбце отображается объем памяти на модуль в килобайтах.
В последнем столбце показано количество и имена модулей, которые зависят
от конкретного модуля.
Список всех установленных ядер
Следующая процедура описывает, как использовать grubby утилиту для получения
списка всех установленных ядер в системе.
Предварительные условия:
Права root пользователя.
Процедура
•
Чтобы получить список всех установленных ядер, выполните:
## grubby --info=ALL | grep ^kernel
kernel="/boot/vmlinuz-4.18.0-305.10.2.el8_4.x86_64"
kernel="/boot/vmlinuz-4.18.0-240.el8.x86_64"
kernel="/boot/vmlinuz-0-rescue-41eb2e172d7244698abda79a51778f1b"
Вывод отображает путь ко всем установленным ядрам, а также отображает их
соответствующие версии.
Установка ядра по умолчанию
Следующая процедура описывает, как установить конкретное ядро по умолчанию с
помощью grubby инструмента командной строки и GRUB.
Процедура:
•
Установка ядра по умолчанию с помощью grubby инструмента:
–
Выполните следующую команду, чтобы установить ядро по умолчанию с
помощью grubby инструмента:
## grubby --set-default $kernel_path
433
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Команда использует идентификатор машины без суффикса .conf в качестве
аргумента. Идентификатор машины находится в /boot/loader/entries/каталоге.
•
Установка ядра по умолчанию с использованием id аргумента:
–
Перечислите загрузочные записи, используя id аргумент, а затем
установите предполагаемое ядро по умолчанию:
## grubby --info ALL | grep id
## grubby --set-default /boot/vmlinuz-<version>.<architecture>
Примечание: Чтобы получить список загрузочных записей с помощью title аргумента,
выполните команду.
## grubby --info=ALL | grep title
•
Установка ядра по умолчанию только для следующей загрузки:
–
Выполните следующую команду, чтобы установить ядро по умолчанию
только для следующей перезагрузки с помощью grub2-reboot команды:
## grub2-reboot <index|title|id>
Предупреждение: С осторожностью установите ядро по умолчанию только для
следующей загрузки. Установка новых RPM ядер, самосборных ядер и ручное
добавление записей в /boot/loader/entries/ каталог может изменить значения индекса.
Отображение информации о модулях ядра
При работе с модулем ядра может понадобиться дополнительная информация об
этом модуле. Эта процедура описывает, как отобразить дополнительную
информацию о модулях ядра.
Предварительные условия:
Пакет kmod установлен.
Процедура:
•
Чтобы отобразить информацию о любом модуле ядра, выполните:
$ modinfo <KERNEL_MODULE_NAME>
Например:
434
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
$ modinfo virtio_net
filename: /lib/modules/4.18.0-94.el8.x86_64/kernel/drivers/net/virtio_net.ko.xz
license:
GPL
description: Virtio network driver
sloversion: 8.1
srcversion: 2E9345B281A898A91319773
alias:
virtio:d00000001v*
depends:
net_failover
intree:
Y
name:
virtio_net
vermagic: 4.18.0-94.el8.x86_64 SMP mod_unload modversions
...
parm:
napi_weight:int
parm:
csum:bool
parm:
gso:bool
parm:
napi_tx:bool
Команда modinfo отображает некоторую подробную информацию об указанном
модуле ядра. Можно запросить информацию обо всех доступных модулях, независимо
от того, загружены они или нет. Записи parm показывают параметры, которые
пользователь может установить для модуля, и тип ожидаемого значения.
Примечание: При вводе имени модуля ядра не добавляйте .ko.xz расширение в конец
имени. Имена модулей ядра не имеют расширений; их соответствующие файлы
делают.
Загрузка модулей ядра во время выполнения системы
Оптимальный способ расширить функциональность ядра Linux — загрузить модули
ядра. Следующая процедура описывает, как использовать modprobe команду для
поиска и загрузки модуля ядра в работающее в данный момент ядро.
Предварительные условия:
•
•
•
root права;
Пакет kmod установлен;
Соответствующий модуль ядра не загружен. Чтобы убедиться, что это так,
перечислите загруженные модули ядра (см. «Список загруженных в данный
момент модулей ядра»).
Процедура:
1.
Выберите модуль ядра, который необходимо загрузить.
435
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Модули находятся в /lib/modules/$(uname -r)/kernel// каталоге.
2.
Загрузите соответствующий модуль ядра:
## modprobe <MODULE_NAME>
Примечание: При вводе имени модуля ядра не добавляйте .ko.xz расширение в конец
имени. Имена модулей ядра не имеют расширений; их соответствующие файлы
делают.
При необходимости убедитесь, что соответствующий модуль был загружен:
$ lsmod | grep <MODULE_NAME>
Если модуль был загружен правильно, эта команда отображает соответствующий
модуль ядра. Например:
$ lsmod | grep serio_raw
serio_raw 16384 0
Примечание: Изменения, описанные в этой процедуре, не сохранятся после
перезагрузки системы. Информацию о том, как загружать модули ядра, чтобы они
сохранялись при перезагрузке системы, см. в разделе «Автоматическая загрузка
модулей ядра во время загрузки системы».
Выгрузка модулей ядра во время работы системы
Следующая процедура описывает, как использовать modprobe команду для поиска и
выгрузки модуля ядра во время выполнения системы из загруженного в данный момент
ядра.
Предварительные условия:
•
•
Права root пользователя.
Пакет kmod установлен.
Процедура:
1.
Выполните lsmod команду и выберите модуль ядра, который нужно выгрузить.
Если модуль ядра имеет зависимости, выгрузите их перед выгрузкой модуля ядра.
Подробнее об идентификации модулей с зависимостями см. в разделе “Список
загруженных в данный момент модулей ядра” и “Зависимости модулей ядра”.
2.
Выгрузите соответствующий модуль ядра:
436
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## modprobe -r <MODULE_NAME>
3.
При вводе имени модуля ядра не добавляйте .ko.xz расширение в конец имени.
Имена модулей ядра не имеют расширений; их делают соответствующие
файлы.
Предупреждение: Не выгружайте модули ядра, когда они используются работающей
системой. Это может привести к нестабильности или неработоспособности
системы.
4.
При необходимости убедитесь, что соответствующий модуль был выгружен:
$ lsmod | grep <MODULE_NAME>
Если модуль был успешно выгружен, эта команда ничего не выводит.
Примечание: После завершения этой процедуры модули ядра, которые определены для
автоматической загрузки при загрузке, не останутся незагруженными после
перезагрузки системы. Информацию о том, как противостоять этому результату,
см. в разделе «Предотвращение автоматической загрузки модулей ядра во время
загрузки системы».
Выгрузка модулей ядра на ранних стадиях процесса загрузки
В некоторых ситуациях необходимо выгрузить модуль ядра очень рано в процессе
загрузки. Например, когда модуль ядра содержит код, который приводит к тому, что
система перестает отвечать на запросы, и пользователь не может достичь этапа,
чтобы окончательно отключить мошеннический модуль ядра. В этом случае можно
временно заблокировать загрузку модуля ядра с помощью загрузчика.
Предупреждение: Изменения, описанные в этой процедуре, не сохранятся после
следующей перезагрузки. Сведения о том, как добавить модуль ядра в список
запрещенных, чтобы он не загружался автоматически в процессе загрузки, см. в
разделе «Предотвращение автоматической загрузки модулей ядра во время загрузки
системы».
Предварительные условия:
Существует загружаемый модуль ядра, который нужно по какой-то причине не
загружать.
Процедура:
Отредактируйте соответствующую запись загрузчика, чтобы выгрузить нужный
модуль ядра до продолжения последовательности загрузки.
437
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Используйте клавиши курсора, чтобы выделить соответствующую запись
загрузчика.
2.
Нажмите клавишу Е, чтобы отредактировать запись.
3.
С помощью клавиш курсора перейдите к строке, начинающейся с linux.
4.
Добавить modprobe.blacklist=module_name в конец строки.
5.
Нажмите клавиши CTRL+xдля загрузки с измененной конфигурацией.
Проверка:
После полной загрузки системы убедитесь, что соответствующий модуль ядра не
загружен.
## lsmod | grep serio_raw
Рисунок. Модуль ядра не загружен
Автоматическая загрузка модулей ядра во время загрузки системы
Следующая процедура описывает, как настроить модуль ядра, чтобы он загружался
автоматически во время процесса загрузки.
Предварительные условия:
•
•
Права root пользователя.
Пакет kmod установлен.
Процедура:
1.
Выберите модуль ядра, который необходимо загрузить в процессе загрузки.
Модули находятся в /lib/modules/$(uname -r)/kernel// каталоге.
2.
Создайте файл конфигурации для модуля:
## echo <MODULE_NAME> > /etc/modules-load.d/<MODULE_NAME>.conf
Примечание: При вводе имени модуля ядра не добавляйте .ko.xz расширение в конец
имени. Имена модулей ядра не имеют расширений; их делают соответствующие
файлы.
438
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
3.
При необходимости после перезагрузки убедитесь, что соответствующий
модуль был загружен:
$ lsmod | grep <MODULE_NAME>
Приведенная выше примерная команда должна завершиться успешно и отобразить
соответствующий модуль ядра.
Примечание: Изменения, описанные в этой процедуре, сохранятся после перезагрузки
системы.
Предотвращение автоматической загрузки модулей ядра во время загрузки системы
Следующая процедура описывает, как добавить модуль ядра в список запрещенных,
чтобы он не загружался автоматически в процессе загрузки.
Предварительные условия:
•
•
•
Права root пользователя.
Пакет kmod установлен.
Модуль ядра в списке запрещенных не является важным для текущей
конфигурации системы.
Процедура:
1.
Выберите модуль ядра, который необходимо поместить в список запрещенных:
$ lsmod
Module
Size Used by
fuse
126976 3
xt_CHECKSUM
16384 1
ipt_MASQUERADE
16384 1
uinput
20480 1
xt_conntrack
16384 1
...
2.
•
•
3.
Команда lsmod отображает список модулей, загруженных в работающее в
данный момент ядро.
В качестве альтернативы укажите незагруженный модуль ядра, который
необходимо предотвратить от потенциальной загрузки.
Все модули ядра находятся в /lib/modules//kernel// каталоге.
Создайте файл конфигурации для запрещенного списка:
## vim /etc/modprobe.d/blacklist.conf
439
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
# Blacklists <KERNEL_MODULE_1>
blacklist <MODULE_NAME_1>
install <MODULE_NAME_1> /bin/false
# Blacklists <KERNEL_MODULE_2>
blacklist <MODULE_NAME_2>
install <MODULE_NAME_2> /bin/false
# Blacklists <KERNEL_MODULE_n>
blacklist <MODULE_NAME_n>
install <MODULE_NAME_n> /bin/false
...
В примере показано содержимое blacklist.conf файла, отредактированное vim
редактором. Строка blacklist гарантирует, что соответствующий модуль ядра не
будет автоматически загружен в процессе загрузки. Однако эта blacklist команда не
предотвращает загрузку модуля в качестве зависимости для другого модуля ядра,
которого нет в списке запрещенных. Поэтому эта install строка заставляет
/bin/false работать вместо установки модуля.
Строки, начинающиеся со знака решетки, являются комментариями, чтобы сделать
файл более читабельным.
Примечание: При вводе имени модуля ядра не добавляйте .ko.xz расширение в конец
имени. Имена модулей ядра не имеют расширений; их соответствующие файлы
делают.
1.
Перед перестроением создайте резервную копию текущего исходного образа
виртуального диска:
## cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bak.$(date +%m-%d%H%M%S).img
Приведенная выше команда создает резервную копию initramfs на случай, если в новой
версии возникнут непредвиденные проблемы.
•
В качестве альтернативы создайте резервную копию другого исходного образа
виртуального диска, соответствующего версии ядра, для которой нужно
поместить модули ядра в список запрещенных:
## cp /boot/initramfs-<SOME_VERSION>.img /boot/initramfs-<SOME_VERSION>.img.bak.$(date
+%m-%d-%H%M%S)
440
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
2.
Создайте новый начальный образ виртуального диска, чтобы отразить
изменения:
## dracut -f -v
3.
Если создается начальный образ виртуального диска для версии ядра, отличной
от той, в которую произошла загрузка в данный момент, укажите и целевую
версию, initramfs и версию ядра:
## dracut -f -v /boot/initramfs-<TARGET_VERSION>.img
<CORRESPONDING_TARGET_KERNEL_VERSION>
4.
Перезагрузите систему:
$ reboot
Примечание: Изменения, описанные в этой процедуре, вступят в силу и сохранятся
после перезагрузки системы. Если ключевой модуль ядра неправильно помещен в
список запрещенных, можно столкнуться с нестабильной или неработоспособной
системой.
Компиляция пользовательских модулей ядра
Можно собрать пробный модуль ядра в соответствии с требованиями различных
конфигураций на аппаратном и программном уровне.
Предварительные условия:
•
•
•
Установлены пакеты kernel-devel, gcc и .elfutils-libelf-devel
Права root пользователя.
Создан /root/testmodule/ каталог, в котором компилируете пользовательский
модуль ядра.
Процедура:
1.
Создайте /root/testmodule/test.c файл со следующим содержимым.
#include <linux/module.h>
#include <linux/kernel.h>
int init_module(void)
{ printk("Hello World\n This is a test\n"); return 0; }
441
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
void cleanup_module(void)
{ printk("Good Bye World"); }
Файл test. представляет собой исходный файл, обеспечивающий основную
функциональность модуля ядра. Файл был создан в специальном /root/testmodule/
каталоге для организационных целей. После компиляции модуля /root/testmodule/
каталог будет содержать несколько файлов.
Файл test.c включает в себя из системных библиотек:
•
•
Заголовочный linux/kernel.h файл необходим для printk() функции в примере кода.
Файл linux/module.h содержит объявления функций и определения макросов,
которые будут совместно использоваться несколькими исходными файлами,
написанными на языке программирования C.
Затем следуйте функциям init_module() и cleanup_module() для запуска и завершения
функции ведения журнала ядра printk(), которая печатает текст.
2.
Создайте /root/testmodule/Makefile файл со следующим содержимым:
obj-m := test.o
Makefile содержит инструкции, которые компилятор должен создать объектный
файл со специальным именем test.o. Директива obj-mу указывает, что полученный
test.ko файл будет скомпилирован как загружаемый модуль ядра. В качестве
альтернативы obj-y директива предписывает собирать test.ko как встроенный
модуль ядра.
3.
Скомпилируйте модуль ядра.
## make -C /lib/modules/$(uname -r)/build M=/root/testmodule modules
make: Entering directory '/usr/src/kernels/4.18.0-305.el8.x86_64'
CC [M] /root/testmodule/test.o
Building modules, stage 2.
MODPOST 1 modules
WARNING: modpost: missing MODULE_LICENSE() in /root/testmodule/test.o
see include/linux/module.h for more information
CC /root/testmodule/test.mod.o
LD [M] /root/testmodule/test.ko
make: Leaving directory '/usr/src/kernels/4.18.0-305.el8.x86_64'
Компилятор создает объектный файл (test.o) для каждого исходного файла (test.c) в
качестве промежуточного шага перед их объединением в окончательный модуль ядра
(test.ko).
442
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
После успешной компиляции /root/testmodule/ содержит дополнительные файлы,
относящиеся к скомпилированному пользовательскому модулю ядра. Сам
скомпилированный модуль представлен test.ko файлом.
Проверка:
1.
Необязательно: проверьте содержимое /root/testmodule/ каталога:
## ls -l /root/testmodule/
total 152
-rw-r—r--. 1 root root 16 Jul 26 08:19 Makefile
-rw-r—r--. 1 root root 25 Jul 26 08:20 modules.order
-rw-r—r--. 1 root root 0 Jul 26 08:20 Module.symvers
-rw-r—r--. 1 root root 224 Jul 26 08:18 test.c
-rw-r—r--. 1 root root 62176 Jul 26 08:20 test.ko
-rw-r—r--. 1 root root 25 Jul 26 08:20 test.mod
-rw-r—r--. 1 root root 849 Jul 26 08:20 test.mod.c
-rw-r—r--. 1 root root 50936 Jul 26 08:20 test.mod.o
-rw-r—r--. 1 root root 12912 Jul 26 08:20 test.o
2.
Скопируйте модуль ядра в /lib/modules/$(uname -r)/ каталог:
## cp /root/testmodule/test.ko /lib/modules/$(uname -r)/
3.
Обновите список модульных зависимостей:
## depmod -a
4.
Загрузите модуль ядра:
## modprobe -v test
insmod /lib/modules/4.18.0-305.el8.x86_64/test.ko
5.
Убедитесь, что модуль ядра был успешно загружен:
## lsmod | grep test
test
16384 0
6.
Прочитайте последние сообщения из кольцевого буфера ядра:
## dmesg
443
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
[74422.545004] Hello World
This is a test
Настройка параметров командной строки ядра
Параметры командной строки ядра — это способ изменить поведение некоторых
аспектов ядра SberLinux во время загрузки. У системного администратора имеется
полный контроль над тем, какие параметры устанавливаются при загрузке.
Определенное поведение ядра можно настроить только во время загрузки, поэтому
понимание того, как вносить эти изменения, является ключевым навыком
администратора.
Примечание: Изменение поведения системы путем изменения параметров командной
строки ядра может иметь негативные последствия для системы. Поэтому следует
протестировать изменения перед их развертыванием в рабочей среде.
Понимание параметров командной строки ядра
Параметры командной строки ядра используются для настройки во время загрузки:
•
•
•
ядро SberLinux;
начальный RAM-диск;
возможности пользовательского пространства.
Параметры времени загрузки ядра часто используются для перезаписи значений по
умолчанию и для установки определенных параметров оборудования.
По умолчанию параметры командной строки ядра для систем, использующих
загрузчик GRUB, определяются в kernel opts переменной /boot/grub2/grubenv файла для
каждой загрузочной записи ядра.
Утилита grubby
grubby — это утилита для управления файлами конфигурации загрузчика.
Также можно использовать grubby для изменения загрузочной записи по умолчанию и
для добавления/удаления аргументов из пункта меню GRUB.
Загрузочные записи
Загрузочная запись — это набор параметров, которые хранятся в файле
конфигурации и привязаны к конкретной версии ядра. На практике есть как минимум
столько же загрузочных записей, сколько ядер установлено в системе. Файл
конфигурации загрузочной записи находится в /boot/loader/entries/ каталоге и может
выглядеть так:
444
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
6f9cc9cb7d7845d49698c9537337cedc-4.18.0-5.el8.x86_64.conf
Приведенное выше имя файла состоит из идентификатора машины, хранящегося в
/etc/machine-id файле, и версии ядра.
Файл конфигурации загрузочной записи содержит информацию о версии ядра,
начальном образе виртуального диска и kernelopts переменной среды, которая
содержит параметры командной строки ядра.
Переменная kernelopts среды определена в /boot/grub2/grubenv файле.
Изменение параметров командной строки ядра для всех загрузочных записей
Эта процедура описывает, как изменить параметры командной строки ядра для всех
загрузочных записей в системе.
Предварительные условия:
Убедитесь, что grubby утилита установлена в системе.
Процедура:
•
Чтобы добавить параметр:
## grubby --update-kernel=ALL --args="<NEW_PARAMETER>"
Для систем, использующих загрузчик GRUB, команда обновляет /boot/grub2/grubenv
файл, добавляя новый параметр ядра к kernelopts переменной в этом файле.
•
Чтобы удалить параметр, введите:
## grubby --update-kernel=ALL --remove-args="<PARAMETER_TO_REMOVE>"
•
После каждого обновления пакета ядра распространяйте сконфигурированные
параметры ядра на новые ядра:
## grub2-mkconfig -o /etc/grub2.cfg
Примечание: Новые установленные ядра не наследуют параметры командной строки
ядра от ранее сконфигурированных ядер. Необходимо запустить grub2-mkconfig
команду на только что установленном ядре, чтобы распространить необходимые
параметры на новое ядро.
445
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Изменение параметров командной строки ядра для одной загрузочной записи
Эта процедура описывает, как изменить параметры командной строки ядра для
одной загрузочной записи в системе.
Предварительные условия:
Убедитесь, что в системе установлены утилиты grubby и zipl.
Процедура:
•
Чтобы добавить параметр, введите:
## grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="<NEW_PARAMETER>"
•
Чтобы удалить параметр, используйте следующее:
## grubby --update-kernel=/boot/vmlinuz-$(uname -r) --remove-args="<PARAMETER_TO_REMOVE>"
Примечание: В системах, использующих этот grub.cfg файл, по умолчанию есть
options параметр для каждой загрузочной записи ядра, для которого задана kernelopts
переменная. Эта переменная определена в / boot/grub2/grubenv файле конфигурации.
Предупреждение: В системах GRUB2:
•
•
Если параметры командной строки ядра изменены для всех загрузочных записей,
grubby утилита обновляет kernelopts переменную в /boot/grub2/grubenv файле.
Если параметры командной строки ядра изменяются для одной загрузочной
записи, kernelopts переменная расширяется, параметры ядра изменяются, а
результирующее значение сохраняется в файле соответствующей загрузочной
записи /boot/loader/entries/<RELEVANT_KERNEL_BOOT_ENTRY.conf>.
В системах zIPL:
•
grubby изменяет и сохраняет параметры командной строки ядра для
отдельной загрузочной записи ядра в файле /boot/loader/entries/.conf.
Временное изменение параметров командной строки ядра во время загрузки
Следующая процедура позволяет вносить временные изменения в запись меню ядра,
изменяя параметры ядра только во время одного процесса загрузки.
Процедура:
1.
Выберите ядро, которое нужно запустить, когда появится меню загрузки GRUB
2, и нажмите клавишу e, чтобы отредактировать параметры ядра.
446
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
2.
Найдите командную строку ядра, переместив курсор вниз. Командная строка
ядра начинается с linux в 64-разрядных системах IBM Power Series и x86-64 на
базе BIOS или linuxefi в системах с UEFI.
3.
Переместите курсор в конец строки.
Примечание: Нажмите Ctrl + a, для того, чтобы перейти к началу строки, и Ctrl + e,
чтобы перейти к концу строки. В некоторых системах также могут работать
клавиши Home и End.
4.
Отредактируйте параметры ядра по мере необходимости. Например, чтобы
запустить систему в аварийном режиме, добавьте параметр Emergency в конец
строки linux:
linux ($root)/vmlinuz-4.18.0-348.12.2.el8_5.x86_64 root=/dev/mapper/sberlinux-root ro
crashkernel=auto resume=/dev/mapper/sberlinux-swap rd.lvm.lv=sberlinux/root
rd.lvm.lv=sberlinux/swap rhgb quiet emergency
Чтобы включить системные сообщения, удалите параметры rhgb и quiet.
Нажмите Ctrl + x для загрузки с выбранным ядром и измененными параметрами
командной строки.
Примечание: Нажмите клавишу Esc, чтобы выйти из режима редактирования
командной строки, и все изменения, сделанные пользователем, будут удалены.
Примечание: Эта процедура применяется только для однократной загрузки и не
вносит постоянные изменения.
Настройка параметров GRUB для включения подключения к последовательной
консоли
Последовательная консоль удобна, когда нужно подключиться к автономному серверу
или встроенной системе, а сеть не работает. Или когда нужно обойти правила
безопасности и получить доступ для входа в другую систему.
Необходимо настроить некоторые параметры GRUB по умолчанию, чтобы
использовать соединение с последовательной консолью.
Предварительные условия:
Права root пользователи.
Процедура:
1.
Добавьте следующие две строки в /etc/default/grub файл:
447
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
GRUB_TERMINAL="serial"
GRUB_SERIAL_COMMAND="serial --speed=9600 --unit=0 --word=8 --parity=no --stop=1"
Первая строка отключает графический терминал. Ключ GRUB_TERMINAL
переопределяет значения ключей GRUB_TERMINAL_INPUT и GRUB_TERMINAL_OUTPUT.
Вторая строка настраивает скорость передачи данных –speed, контроль четности
и другие значения в соответствии со средой и оборудованием. Обратите внимание,
что гораздо более высокая скорость передачи, например 115200, предпочтительнее
для таких задач, как просмотр файлов журнала.
2.
•
Обновите файл конфигурации GRUB.
На машинах с BIOS:
## grub2-mkconfig -o /boot/grub2/grub.cfg
•
На машинах на базе UEFI:
## grub2-mkconfig -o /boot/efi/EFI/sberlinux/grub.cfg
•
Перезагрузите систему, чтобы изменения вступили в силу.
Настройка параметров ядра во время выполнения
Системному администратору можно изменять многие аспекты поведения ядра
SberLinux во время выполнения. В этом разделе описывается, как настроить
параметры ядра во время выполнения с помощью sysctl команды и путем изменения
файлов конфигурации в /etc/sysctl.d/ и ./proc/sys/ каталогах.
Параметры ядра
Параметры ядра — это настраиваемые значения, которые можно настроить во
время работы системы. Нет необходимости перезагружать или перекомпилировать
ядро, чтобы изменения вступили в силу.
Можно обращаться к параметрам ядра через:
•
•
•
•
команду sysctl_;
виртуальную файловую систему, смонтированную в /proc/sys/ каталоге;
файлы конфигурации в /etc/sysctl.d/ каталоге;
настраиваемые элементы разделены на классы подсистемой ядра. SberLinux
имеет следующие настраиваемые классы, представленные в таблице ниже.
Таблица. Классы в sysctl
448
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Настраиваемый класс
Подсистема
abi
Домены исполнения и личности.
crypto
Криптографические интерфейсы.
debug
Интерфейсы отладки ядра.
dev
Информация об устройстве.
fs
Глобальные и специальные настройки файловой системы.
kernel
Глобальные настройки ядра.
net
Сетевые настройки.
sunrpc
Удаленный вызов процедур Sun (NFS).
user
Ограничения пространства имен пользователей.
vm
Настройка и управление памятью, буферами и кешем
Примечание: Настройка параметров ядра в производственной системе требует
тщательного планирования. Незапланированные изменения могут сделать ядро
нестабильным, что потребует перезагрузки системы. Перед изменением каких-либо
значений ядра убедитесь, что используются допустимые параметры.
Временная настройка параметров ядра с помощью sysctl
Следующая процедура описывает, как использовать sysctl команду для временной
установки параметров ядра во время выполнения. Команда также полезна для
вывода списка и фильтрации настраиваемых параметров.
Предварительные условия:
Права root пользователя.
Процедура:
1.
Чтобы перечислить все параметры и их значения, используйте следующее:
## sysctl -a
Примечание: Команда # sysctl -a отображает параметры ядра, которые можно
настроить во время выполнения и во время загрузки.
2.
Чтобы временно настроить параметр, используйте команду, как в следующем
примере:
## sysctl <TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE>
449
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Приведенная выше примерная команда изменяет значение параметра во время
работы системы. Изменения вступают в силу немедленно, без необходимости
перезапуска.
Примечание: Изменения возвращаются к значениям по умолчанию после перезагрузки
системы.
Постоянная настройка параметров ядра с помощью sysctl
Следующая процедура описывает, как использовать sysctl команду для постоянной
установки параметров ядра.
Предварительные условия:
Права root пользователя.
Процедура:
1.
Чтобы перечислить все параметры, используйте следующее:
## sysctl -a
Команда отображает все параметры ядра, которые можно настроить во время
выполнения.
2.
Чтобы настроить параметр на постоянной основе:
## sysctl -w <TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE> >> /etc/sysctl.conf
Пример команды изменяет настраиваемое значение и записывает его в /etc/sysctl.conf
файл, который переопределяет значения параметров ядра по умолчанию. Изменения
вступают в силу немедленно и постоянно, без необходимости перезапуска.
Примечание: Чтобы навсегда изменить параметры ядра, можно вручную изменить
файлы конфигурации в /etc/sysctl.d/ каталоге.
Использование файлов конфигурации в /etc/sysctl.d/ для настройки параметров ядра
Следующая процедура описывает, как вручную изменить файлы конфигурации в
/etc/sysctl.d/ каталоге, чтобы установить постоянные параметры ядра.
Предварительные условия:
Права root пользователя.
Процедура:
1.
Создайте новый файл конфигурации в /etc/sysctl.d/:
450
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## vim /etc/sysctl.d/<some_file.conf>
2.
Включите параметры ядра, по одному в строке, следующим образом:
<TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE>
<TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE>
3.
Сохраните файл конфигурации.
4.
Перезагрузите машину, чтобы изменения вступили в силу.
•
В качестве альтернативы, чтобы применить изменения без перезагрузки,
выполните:
## sysctl -p /etc/sysctl.d/<some_file.conf>
Команда позволяет прочитать значения из файла конфигурации, который создан
ранее.
Временная настройка параметров ядра через /proc/sys/
Следующая процедура описывает, как временно установить параметры ядра с
помощью файлов в каталоге виртуальной файловой системы /proc/sys/.
Предварительные условия:
Права root пользователя.
Процедура:
1.
Определите параметр ядра, который необходимо настроить:
## ls -l /proc/sys/<TUNABLE_CLASS>/
Доступные для записи файлы, возвращаемые командой, можно использовать для
настройки ядра. Файлы с правами только на чтение предоставляют информацию о
текущих настройках.
2.
Присвойте целевое значение параметру ядра:
## echo <TARGET_VALUE> > /proc/sys/<TUNABLE_CLASS>/<PARAMETER>
Команда вносит изменения в конфигурацию, которые исчезают после перезапуска
системы.
451
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
3.
При желании проверьте значение вновь установленного параметра ядра:
## cat /proc/sys/<TUNABLE_CLASS>/<PARAMETER>
Начало работы с ведением журнала ядра
Файлы журналов — это файлы, содержащие сообщения о системе, включая ядро,
службы и запущенные в ней приложения. Система журналирования в SberLinux
основана на встроенном протоколе системного журнала. Различные утилиты
используют эту систему для записи событий и организации их в файлы журналов. Эти
файлы полезны при проверке операционной системы или устранении неполадок.
Кольцевой буфер ядра
В процессе загрузки консоль предоставляет много важной информации о начальном
этапе запуска системы. Чтобы избежать потери ранних сообщений, ядро использует
так называемый кольцевой буфер. В этом буфере хранятся все сообщения, включая
загрузочные сообщения, сгенерированные printk() функцией в коде ядра. Сообщения из
кольцевого буфера ядра затем считываются и сохраняются в файлах журнала в
постоянном хранилище, например, syslog службой.
Упомянутый выше буфер представляет собой циклическую структуру данных
фиксированного размера, жестко запрограммированную в ядре. Пользователи могут
отображать данные, хранящиеся в кольцевом буфере ядра, с помощью dmesg команды
или /var/log/boot.log файла. Когда кольцевой буфер заполнен, новые данные
перезаписывают старые.
Роль printk на уровнях журнала и ведении журнала ядра
Каждое сообщение от ядра имеет связанный с ним уровень журнала, который
определяет важность сообщения. Кольцевой буфер ядра, собирает сообщения ядра
всех уровней журнала. Это kernel.printk параметр, определяющий, какие сообщения из
буфера выводятся на консоль.
Значения уровня журнала разбиваются в следующем порядке:
0 — аварийная ситуация с ядром. Система непригодна для использования.
1 — Оповещение ядра. Действия должны быть приняты немедленно.
2 — Состояние ядра считается критическим.
3 — Состояние общей ошибки ядра.
4 — Общее состояние предупреждения ядра.
5 — Уведомление ядра о нормальном, но серьезном состоянии.
452
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
6 — Информационное сообщение ядра.
7 — сообщения уровня отладки ядра.
По умолчанию kernel.printk в SberLinux содержатся следующие четыре значения:
## sysctl kernel.printk
kernel.printk = 7 4 1 7
Четыре значения определяют следующее:
1.
Уровень журнала консоли определяет самый низкий приоритет сообщений,
выводимых на консоль.
2.
Уровень журнала по умолчанию для сообщений без явного прикрепленного к ним
уровня журнала.
3.
Устанавливает наименьшую возможную конфигурацию уровня журнала для
уровня журнала консоли.
4.
Устанавливает значение по умолчанию для уровня журнала консоли во время
загрузки.
Каждое из этих значений определяет отдельное правило обработки сообщений об
ошибках.
Примечание: Значение по умолчанию 7 4 1 7 printkзначение позволяет лучше
отлаживать активность ядра. Однако в сочетании с последовательной консолью
этот printkпараметр может вызвать интенсивные всплески ввода-вывода, которые
могут привести к тому, что система временно перестанет отвечать на запросы.
Чтобы избежать таких ситуаций, установка printk значения 4 4 1 7 обычно
работает, но за счет потери дополнительной отладочной информации.
Также обратите внимание, что некоторые параметры командной строки ядра,
такие как quiet или debug, изменяют значения по умолчанию kernel.printk.
Установка kdump
Служба kdump устанавливается и активируется по умолчанию в новых установках
SberLinux. В следующих разделах объясняется, что kdump такое и как установить,
kdump если он не включен по умолчанию.
Служба kdump
kdump — это служба, предоставляющая механизм аварийного dump для ядра. Сервис
позволяет сохранять содержимое системной памяти для анализа. kdump использует
453
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
системный вызов kexec для загрузки второго ядра (ядро захвата) без перезагрузки; а
затем захватывает содержимое памяти сбойного ядра (аварийный dump или vmcore)
и сохраняет его в файл. Второе ядро находится в зарезервированной части
системной памяти.
Примечание: dump сбоя ядра может быть единственной доступной информацией в
случае системного сбоя (критической ошибки). Поэтому оперативность kdump важна
в критически важных средах. Рекомендуется, чтобы системные администраторы
регулярно обновляли и тестировали kexec-tools обычный цикл обновления ядра. Это
особенно важно, когда реализуются новые функции ядра.
Можно включить kdump для всех установленных ядер на машине или только для
определенных ядер. Это полезно, когда на машине используется несколько ядер,
некоторые из которых достаточно стабильны, чтобы не возникало опасений, что
они могут выйти из строя.
При kdump установке создается /etc/kdump.conf файл по умолчанию. Файл включает
минимальную kdump конфигурацию по умолчанию. Можно отредактировать этот
файл, чтобы настроить kdump конфигурацию, но это не обязательно.
Установка kdump с помощью Anaconda
Программа установки Anaconda предоставляет экран графического интерфейса для
kdump настройки во время интерактивной установки. Экран установщика
называется KDUMP и доступен на главном экране сводки установки. Можно включить
kdump и зарезервировать необходимый объем памяти.
Процедура:
1.
Перейдите в KDUMP поле.
2.
Включите kdump, если еще не включено.
Рисунок. Включение kdump
3.
Определите, сколько памяти должно быть зарезервировано для файлов kdump.
454
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Рисунок. Память для файлов kdump
Установка kdump из командной строки
Некоторые параметры установки, такие как выборочная установка Kickstart, в
некоторых случаях не устанавливаются или не включаются kdump по умолчанию. В
этом случае - выполните описанную ниже процедуру.
Предварительные условия:
•
•
Пакет kexec-tools установлен.
Выполнены требования к kdump конфигурациям и целям. Подробнее см. в
разделе «Поддерживаемые конфигурации и цели kdump».
Процедура:
1.
Проверьте, установлен ли kdump в системе:
## rpm -q kexec-tools
Вывод, если пакет установлен:
kexec-tools-2.0.17-11.el8.x86_64
Вывод, если пакет не установлен:
package kexec-tools is not installed
Установите kdump и другие необходимые пакеты:
## dnf install kexec-tools
Настройка kdump в командной строке
В следующих разделах объясняется, как планировать и создавать kdump среду.
455
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Оценка размера kdump
При планировании и создании kdump среды важно знать, сколько места требуется
для файла аварийного dump.
Команда makedumpfile –mem-usage оценивает, сколько места требуется для файла
аварийного dump. Создает отчет об использовании памяти. Отчет поможет
определить уровень dump и какие страницы можно безопасно исключить.
Процедура:
•
Выполните следующую команду, чтобы создать отчет об использовании
памяти:
## makedumpfile --mem-usage /proc/kcore
TYPE
PAGES EXCLUDABLE DESCRIPTION
------------------------------------------------------------ZERO
501635 yes
Pages filled with zero
CACHE
51657 yes
Cache pages
CACHE_PRIVATE 5442
yes
Cache pages + private
USER
16301 yes
User process pages
FREE
77738211 yes
Free pages
KERN_DATA.
1333192 no
Dumpable kernel data
Примечание: Команда makedumpfile –mem-usage сообщает требуемую память в
страницах. Это означает, что нужно рассчитать размер используемой памяти в
зависимости от размера страницы ядра.
Настройка использования памяти kdump
Память для kdump резервируется во время загрузки системы. Размер памяти
настраивается в системном файле конфигурации Grand Unified Bootloader (GRUB).
Размер памяти зависит от значения crashkernel= параметра, указанного в файле
конфигурации, и размера физической памяти системы.
Опция crashkernel= может быть определена несколькими способами. Можно указать
crashkernel= значение или настроить auto параметр. Параметр crashkernel=auto
резервирует память автоматически, исходя из общего объема физической памяти в
системе. При настройке ядро автоматически резервирует соответствующий объем
необходимой памяти для ядра захвата. Это помогает предотвратить ошибки
нехватки памяти (OOM).
Предварительные условия:
•
root права;
456
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
Выполнены требования к kdump конфигурациям и целям. Подробнее см. в
разделе “Поддерживаемые конфигурации и цели kdump”.
Процедура:
1.
Отредактируйте /etc/default/grub файл.
2.
Установите crashkernel= параметр.
Например, чтобы зарезервировать 128 МБ памяти, используйте следующее:
crashkernel=128M
Кроме того, можно установить объем зарезервированной памяти переменной в
зависимости от общего объема установленной памяти. Синтаксис резервирования
памяти в переменную: crashkernel=:,:. Например:
crashkernel=512M-2G:64M,2G-:128M
В приведенном выше примере резервируется 64 МБ памяти, если общий объем
системной памяти составляет от 512 МБ до 2 ГБ. Если общий объем памяти
превышает 2 ГБ, резервируется 128 МБ.
•
Смещение зарезервированной памяти. Некоторым системам требуется
резервировать память с определенным фиксированным смещением, поскольку
crashkernelрезервирование происходит очень рано, и требуется
зарезервировать некоторую область для специального использования. Если
установлено смещение, зарезервированная память начинается там. Чтобы
компенсировать зарезервированную память, используйте следующий
синтаксис:
crashkernel=128M@16M
В приведенном выше примере kdump резервируется 128 МБ памяти, начиная с 16 МБ
(физический адрес 0x01000000). Если параметр смещения установлен на 0 или
полностью опущен, kdump автоматически смещается зарезервированная память.
Также можно использовать этот синтаксис при настройке резервирования
переменной памяти. В этом случае смещение всегда указывается последним
(например, crashkernel=512M-2G:64M,2G-:128M@16M).
2.
Используйте следующую команду для обновления файла конфигурации GRUB:
## grub2-mkconfig -o /boot/grub2/grub.cfg
457
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Примечание: Альтернативный способ настроить память для kdump — добавить
параметр crashkernel= к переменной kernelopts с помощью команды grub2-editenv,
которая обновит все загрузочные записи. Или можно использовать утилиту
grubbyдля обновления одной загрузочной записи, нескольких загрузочных записей или
всех загрузочных записей.
Настройка цели kdump
Аварийный dump обычно хранится в виде файла в локальной файловой системе и
записывается непосредственно на устройство. Кроме того, можно настроить
отправку аварийного dump по сети с использованием протоколов NFS или SSH.
Одновременно можно установить только один из этих параметров для сохранения
файла аварийного dump. Поведение по умолчанию — хранить его в /var/crash/
каталоге локальной файловой системы.
Предварительные условия:
•
•
Права root пользователя.
Выполнены требования к kdump конфигурациям и целям. Подробнее см. в
разделе «Поддерживаемые конфигурации и цели kdump».
Процедура:
Чтобы сохранить файл аварийного dump в /var/crash/ каталоге локальной файловой
системы, отредактируйте /etc/kdump.confфайл и укажите путь:
path /var/crash
Параметр path /var/crash представляет собой путь к файловой системе, в которой
kdump сохраняется файл аварийного dump. Когда указана цель dump в /etc/kdump.conf
файле, то path относится к указанной цели dump.
Если цель dump не указана в /etc/kdump.conf файле, то path представляет собой
абсолютный путь от корневого каталога. В зависимости от того, что
смонтировано в текущей системе, цель dump и скорректированный путь dump
выбираются автоматически.
Предупреждение: kdump сохраняет файл аварийного dump в /var/crash/var/crash
каталоге, когда цель dump смонтирована в /var/crash и параметр path установлен
как /var/crash в /etc/kdump.conf файле. Например, в следующем примере ext4 файловая
система уже смонтирована в /var/crash и path установлена как /var/crash:
## grep -v ^# /etc/kdump.conf | grep -v ^$
ext4 /dev/mapper/vg00-varcrashvol
458
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
path /var/crash
core_collector makedumpfile -c --message-level 1 -d 31
Эти результаты в /var/crash/var/crash пути. Чтобы решить эту проблему,
используйте опцию path / вместо path /var/crash.
•
Чтобы изменить локальный каталог, в котором должен быть сохранен
аварийный dump, от имени пользователя root отредактируйте файл
конфигурации /etc/kdump.conf, как описано ниже.
1.
Удалите знак решетки (“#”) в начале #path /var/crash строки.
2.
Замените значение предполагаемым путем к каталогу. Например:
path /usr/local/cores
Примечание: Каталог, определенный как цель kdump с помощью директивы пути,
должен существовать при запуске службы kdump systemd, иначе служба не работает.
•
1.
•
Чтобы записать файл в другой раздел, от имени пользователя root,
отредактируйте файл конфигурации /etc/kdump.conf, как описано ниже.
Удалите знак решетки (” #”) в начале #ext4 строки, в зависимости от выбора:
имени устройства ( #ext4 /dev/vg/lv_kdump строка)
•
метки файловой системы ( #ext4 LABEL=/boot строка)
•
UUID (#ext4 UUID=03138356-5e61-4ab3-b58e-27507ac41937 строка)
•
записи аварийного dump непосредственно на устройство, для этого
отредактируйте /etc/kdump.conf файл конфигурации:
–
–
Удалите знак решетки (#) в начале #raw /dev/vg/lv_kdump строки.
Замените значение предполагаемым именем устройства. Например:
raw /dev/sdb1
•
Чтобы сохранить аварийный dump на удаленной машине с использованием NFS
протокола, отредактируйте /etc/kdump.conf файл конфигурации:
–
–
Удалите знак решетки (#) в начале #nfs my.server.com:/export/tmp строки.
Замените значение допустимым именем хоста и путем к каталогу.
Например:
nfs penguin.example.ru:/export/cores
459
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
Чтобы сохранить аварийный dump на удаленной машине с использованием SSH
протокола, отредактируйте /etc/kdump.conf файл конфигурации:
– Удалите знак решетки (“#”) в начале строки #ssh [email protected].
– Замените значение допустимым именем пользователя и именем хоста.
– Включите свой SSH ключ в конфигурацию.
Удалите знак решетки с начала #sshkey /root/.ssh/kdump_id_rsa строки.
–
Измените значение на расположение ключа, действительного на сервере,
на который выполняется dump. Например:
ssh [email protected]
sshkey /root/.ssh/mykey
Настройка сборщика ядер kdump
Служба kdump использует core_collector программу для захвата образа аварийного
dump. В SberLinux makedumpfile утилита является основным сборщиком по умолчанию.
Это помогает уменьшить файл dump:
•
•
•
сжатие размера файла аварийного dump и копирование только необходимых
страниц с использованием различных уровней dump;
исключение ненужных страниц аварийного dump;
фильтрация типов страниц для включения в аварийный dump.
Синтаксис:
core_collector makedumpfile -l --message-level 1 -d 31
Опции:
•
•
•
-c, -lили -p: укажите формат файла dump сжатия для каждой страницы,
используя zlib для -c опции, lzo для -l опции или snappy для -p опции.
-d (dump_level): исключает страницы, чтобы они не копировались в файл dump.
–message-level: укажите типы сообщений. Можно ограничить вывод на печать,
указав message_level эту опцию. Например, если указать 7 как, message_level
будут напечатаны общие сообщения и сообщения об ошибках. Максимальное
значение message_level- 31
Предварительные условия:
•
•
Права root пользователя.
Выполнены требования к kdump конфигурациям и целям.
Процедура:
460
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Как пользователь root, отредактируйте /etc/kdump.conf файл конфигурации и
удалите знак решетки (#) в начале файла #core_collector makedumpfile -l –
message-level 1 -d 31.
2.
Чтобы включить сжатие файла аварийного dump, выполните:
core_collector makedumpfile -l --message-level 1 -d 31
Параметр -l указывает dump формат сжатого файла. Параметр -d указывает
уровень dump как 31. Параметр –message-level указывает уровень сообщения как 1.
Кроме того, рассмотрите следующие примеры с опциями -c и -p:
•
Чтобы сжать файл аварийного dump, используйте -c:
core_collector makedumpfile -c -d 31 --message-level 1
•
Чтобы сжать файл аварийного dump, используйте -p:
core_collector makedumpfile -p -d 31 --message-level 1
Настройка реакции kdump на сбой по умолчанию
По умолчанию, если kdump не удается создать файл аварийного dump в настроенном
целевом расположении, система перезагружается, и dump при этом теряется. Чтобы
изменить это поведение, выполните описанную ниже процедуру.
Предварительные условия:
•
•
Права root пользователя.
Выполнены требования к kdump конфигурациям и целям.
Процедура:
1.
Как пользователь root, удалите знак решетки (” #”) в начале #failure_action
строки в /etc/kdump.conf файле конфигурации.
2.
Замените значение желаемым действием.
failure_action poweroff
Файл конфигурации для kdump
Файл конфигурации для kdump ядра /etc/sysconfig/kdump. Этот файл управляет
параметрами kdump командной строки ядра.
461
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Для большинства конфигураций используйте параметры по умолчанию. Однако в
некоторых сценариях может потребоваться изменить определенные параметры для
управления kdump поведением ядра. Например, изменение для добавления kdump
командной строки ядра для получения подробного вывода отладки.
В этом разделе содержится информация об изменении параметров
KDUMP_COMMANDLINE_REMOVE и KDUMP_COMMANDLINE_APPEND для kdump.
Информацию о дополнительных параметрах конфигурации см. в файле
/etc/sysconfig/kdump.
KDUMP_COMMANDLINE_REMOVE
Эта опция удаляет аргументы из текущей kdump командной строки. Опция удаляет
параметры, которые могут вызвать kdump ошибки или kdump сбои при загрузке ядра.
Эти параметры могли быть проанализированы из предыдущего KDUMP_COMMANDLINE
процесса или унаследованы от /proc/cmdline файла. Когда эта переменная не
настроена, она наследует все значения из /proc/cmdline файла. Настройка этого
параметра также предоставляет информацию, полезную при отладке проблемы.
Тестирование конфигурации kdump
Можно проверить, что процесс аварийного dump работает и действителен.
Предупреждение: Приведенные ниже команды вызывают сбой ядра. Соблюдайте
осторожность при выполнении этих шагов и никогда не применяйте их небрежно в
активной производственной системе.
Процедура:
1.
Перезагрузите систему с kdump включенным.
2.
Убедитесь, что kdump запущен:
**# systemctl is-active kdump**
active
3.
Принудительный сбой ядра Linux:
echo 1 > /proc/sys/kernel/sysrq
echo c > /proc/sysrq-trigger
Предупреждение: Приведенная выше команда приводит к сбою ядра, требуется
перезагрузка.
462
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
После повторной загрузки файл с адресом address-YYYY-MM-DD-HH:MM:SS/vmcore
создается в месте, которое указано в файле /etc/kdump.conf(по умолчанию
/var/crash/).
Примечание: Это действие подтверждает правильность конфигурации. Также это
действие можно использовать для записи того, сколько времени требуется для
создания аварийного dump с репрезентативной рабочей нагрузкой.
Включение kdump
Можно включить и запустить kdump службу для всех ядер, установленных на машине.
Включение kdump для всех установленных ядер
Предварительные условия:
Права администратора
Процедура:
1.
Добавьте параметр командной строки crashkernel=auto ко всем установленным
ядрам:
## grubby --update-kernel=ALL --args="crashkernel=auto"
2.
Включите kdump службу.
## systemctl enable --now kdump.service
Проверка:
Убедитесь, что kdump служба запущена:
## systemctl status kdump.service
○ kdump.service - Crash recovery kernel arming
Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: disabled)
Active: active (live)
Включение kdump для определенного установленного ядра
Можно включить kdump службу для определенного ядра на машине.
Предварительные условия:
Права администратора
463
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Процедура:
1.
Перечислите ядра, установленные на машине.
## ls -a /boot/vmlinuz/boot/vmlinuz-0-rescue-2930657cd0dc43c2b75db480e5e5b4a9 /boot/vmlinuz-4.18.0-330.el8.x86_64
/boot/vmlinuz-4.18.0-330.rt7.111.el8 .x86_64
2.
Добавьте конкретное kdump ядро в системный файл конфигурации Grand Unified
Bootloader (GRUB). Например:
## grubby --update-kernel=vmlinuz-4.18.0-330.el8.x86_64 --args="crashkernel=auto"
3.
Включите kdump службу.
## systemctl enable --now kdump.service
Проверка:
Убедитесь, что kdump служба запущена:
## systemctl status kdump.service
○ kdump.service - Crash recovery kernel arming
Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: disabled)
Active: active (live)
Отключение службы kdump
Чтобы отключить kdump службу во время загрузки, выполните описанную ниже
процедуру.
Предварительные условия:
•
•
Выполнены требования к kdump конфигурациям и целям.
Все конфигурации для установки kdump настроены в соответствии с
потребностями. Дополнительные сведения см. в разделе «Установка kdump».
Процедура:
1.
Чтобы остановить kdump службу в текущем сеансе:
## systemctl stop kdump.service
464
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
2.
Чтобы отключить kdump службу:
## systemctl disable kdump.service
Предупреждение: Рекомендуется установить kptr_restrict=1. В этом случае служба
kdumpctl загружает аварийное ядро независимо от того, включено или нет
расположение адресного пространства ядра (KASLR).
Устранение неполадок:
Когда для kptr_restrict не установлено значение (1) и если KASLR включен, содержимое
файла /proc/kcore генерируется как все нули. Следовательно, служба kdumpctl не
может получить доступ к /proc/kcore и загрузить аварийное ядро.
Чтобы обойти эту проблему, в файле /usr/share/doc/kexec-tools/kexec-kdump-howto.txt
отображается предупреждающее сообщение, в котором рекомендуется параметр
kptr_restrict=1.
Чтобы убедиться, что служба kdumpctl загружает аварийное ядро, убедитесь, что в
файле sysctl.conf указано значение kernel.kptr_restrict = 1.
Поддерживаемые конфигурации и цели kdump
Требования к памяти для kdump
Чтобы kdump можно было захватить dump сбоя ядра и сохранить его для
дальнейшего анализа, часть системной памяти должна быть постоянно
зарезервирована для ядра захвата. Зарезервированная часть системной памяти
недоступна основному ядру.
В следующей таблице перечислены минимальные требования к памяти для
автоматического резервирования объема памяти kdump. Размер изменяется в
зависимости от общего объема доступной физической памяти.
Таблица. Минимальный объем зарезервированной памяти, необходимый для kdump
Доступная память
Минимальная зарезервированная память
от 1 ГБ до 4 ГБ
160 Мбайт оперативной памяти.
от 4 ГБ до 64 ГБ
192 Мбайт оперативной памяти.
от 64 ГБ до 1 ТБ
256 Мбайт оперативной памяти.
1 ТБ и более
512 Мбайт оперативной памяти
На многих системах kdump умеет оценивать объем требуемой памяти и
автоматически резервировать ее. Это поведение включено по умолчанию, но
работает только в системах с более чем определенным объемом доступной памяти.
465
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Примечание: Автоматическая конфигурация зарезервированной памяти на основе
общего объема памяти в системе — это наилучшая оценка. Фактический требуемый
объем памяти может варьироваться в зависимости от других факторов, таких как
устройства ввода-вывода. Использование недостаточного количества памяти
может привести к тому, что ядро отладки не сможет загрузиться как ядро захвата
в случае Kernel panic (критической ошибки ядра). Чтобы избежать этой проблемы,
достаточно увеличить память аварийного ядра.
Минимальный порог для автоматического резервирования памяти
В некоторых системах возможно выделение памяти kdump автоматически, либо с
помощью crashkernel=auto параметра в файле конфигурации загрузчика, либо путем
включения этой опции в графической утилите настройки. Однако для того, чтобы
это автоматическое резервирование работало, в системе должен быть доступен
определенный объем общей памяти.
Для x86_64 архитектуры пороговое значение для автоматического выделения памяти
- 2 Гбайта. Если в системе имеется память меньше указанного порогового значения,
необходимо настроить память вручную.
Поддерживаемые цели kdump
Когда фиксируется сбой ядра, файл vmcore для dump может быть записан
непосредственно на устройство, сохранен в виде файла в локальной файловой
системе или отправлен по сети. В приведенной ниже таблице содержится полный
список целей dump, которые в настоящее время поддерживаются или явно не
поддерживаются kdump.
Тип
Поддерживаемые цели
Неподдерживаемые цели
Необработанное устройство
Все локально подключенные
необработанные диски и
разделы
Локальная файловая система
ext4 файловая система на
напрямую подключенных дисках,
аппаратных логических дисках
RAID, устройствах LVM и mdraid
массивах
Любая локальная файловая
система, явно не указанная в
этой таблице как
поддерживаемая, включая auto
тип (автоматическое
определение файловой системы)
Удаленный каталог
Удаленные каталоги, доступ к
которым осуществляется по
протоколу NFS или SSH через
IPv4
Удаленные каталоги в rootfs
файловой системе, доступ к
которым осуществляется по NFS
протоколу
466
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Тип
Поддерживаемые цели
Неподдерживаемые цели
Доступ к удаленным каталогам
осуществляется с
использованием iSCSI протокола
через аппаратные и
программные инициаторы
Доступ к удаленным каталогам
осуществляется с
использованием iSCSI протокола
на be2iscsi оборудовании
multipath-based хранилища
Доступ к удаленным каталогам
через IPv6
Удаленные каталоги, доступ к
которым осуществляется с
использованием протокола SMB
или CIFS
Доступ к удаленным каталогам
осуществляется по протоколу
FCoE (Fiber Channel over Ethernet)
Удаленные каталоги, доступ к
которым осуществляется через
беспроводные сетевые
интерфейсы
Примечание: Использование встроенного dump (fadump) для захвата vmcore и его
сохранения на удаленном компьютере с использованием протокола SSH или NFS
приводит к переименованию сетевого интерфейса в kdump-. Переименование
происходит, если является общим, например *eth#, net# и т. д. Эта проблема
возникает из-за того, что сценарии захвата vmcore на начальном RAM-диске (initrd)
добавляют префикс kdump- к имени сетевого интерфейса для обеспечения
постоянного именования. Поскольку тот же самый initrd используется и для обычной
загрузки, имя интерфейса изменено и для производственного ядра.
Поддерживаемые уровни фильтрации kdump
Чтобы уменьшить размер файла dump, kdump использует основной сборщик
makedumpfile для сжатия данных и, при необходимости, для исключения
нежелательной информации. В приведенной ниже таблице содержится полный список
уровней фильтрации, которые в настоящее время поддерживаются утилитой
makedumpfile.
Вариант
Описание
1
Нулевые страницы
2
кеш страниц
4
кеш приватный
8
Пользовательские страницы
467
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Вариант
Описание
16
Свободные страницы
Примечание: Команда makedumpfile поддерживает удаление прозрачных огромных
страниц и страниц hugetlbfs. Рассмотрите типы пользовательских страниц
огромных страниц и удалите их, используя уровень -8.
Поддерживаемые ответы на ошибки по умолчанию
По умолчанию, когда kdump не может создать dump ядра, операционная система
перезагружается. Однако можно настроить kdump на выполнение другой операции в
случае, если ему не удастся сохранить dump ядра в первичную цель. В таблицах ниже
перечислены все действия по умолчанию, которые в настоящее время
поддерживаются.
Вариант
Описание
dump_to_rootfs
Попытайтесь сохранить dump ядра в корневую файловую систему. Этот
параметр особенно полезен в сочетании с сетевой целью: если сетевая цель
недоступна, эта опция настраивает kdump для локального сохранения dump
ядра. После этого система перезагружается.
reboot
Перезагрузите систему, потеряв при этом dump ядра.
halt
Остановите систему, потеряв при этом dump ядра.
poweroff
Выключите систему, потеряв при этом dump ядра.
shell
Запустите сеанс оболочки из initramfs, что позволит пользователю вручную
записать dump ядра.
final_action
Включите дополнительные операции, такие как reboot, halt и poweroff питания
после успешного выполнения kdump или после завершения действия shell или
dump_to_rootfs. Параметр final_action по умолчанию — reboot.
Использование параметра final_action
Final_action параметр позволяет использовать некоторые дополнительные операции,
такие как reboot, halt и poweroff после успешного kdump или после завершения
вызванного механизма failure_response с использованием shell или dump_to_rootfs. Если
final_action параметр не указан, по умолчанию используется reboot.
Процедура:
1.
Отредактируйте `/etc/kdump.confфайл и добавьте final_action параметр.
final_action <reboot | halt | poweroff>
2.
Перезапустите kdump службу:
468
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
kdumpctl restart
Установка лимитов для приложений
Можно использовать функциональные возможности ядра групп управления (cgroups)
для установки ограничений, определения приоритетов или изоляции аппаратных
ресурсов процессов. Это позволяет детально контролировать использование
ресурсов приложениями, чтобы использовать их более эффективно.
Общие сведения о контрольных группах
Группы управления — это функция ядра Linux, которая позволяет организовывать
процессы в иерархически упорядоченные группы — cgroups. Иерархия (дерево групп
управления) определяется путем предоставления структуры виртуальной файловой
системе cgroups, смонтированной по умолчанию в каталоге /sys/fs/cgroup/. Диспетчер
систем и служб systemd использует cgroups для организации всех модулей и служб,
которыми он управляет. Кроме того, можно вручную управлять иерархиями cgroups,
создавая и удаляя подкаталоги в каталоге /sys/fs/cgroup/.
Контроллеры ресурсов (компонент ядра) затем изменяют поведение процессов в
cgroups, ограничивая, расставляя приоритеты или распределяя системные ресурсы
(такие, как процессорное время, память, пропускная способность сети или
различные комбинации) этих процессов.
Дополнительным преимуществом cgroups является объединение процессов,
позволяющее разделить аппаратные ресурсы между приложениями и пользователями.
Тем самым может быть достигнуто повышение общей эффективности, стабильности
и безопасности пользовательской среды.
Группы управления версия 1
Группы управления версии 1 (cgroups-v1) обеспечивают иерархию контроллеров для
каждого ресурса. Это означает, что каждый ресурс, такой как ЦП, память, вводвывод и т. д., имеет свою собственную иерархию групп управления. Можно
комбинировать различные иерархии групп управления таким образом, чтобы один
контроллер мог координировать свои действия с другим при управлении
соответствующими ресурсами. Однако два контроллера могут принадлежать к
разным иерархиям процессов, что не позволяет обеспечить их надлежащую
координацию.
Контроллеры cgroups-v1 разрабатывались в течение большого промежутка времени,
и в результате поведение и имена их управляющих файлов неодинаковы.
Группы управления версия 2
469
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Проблемы с координацией контроллеров, возникшие из-за гибкости иерархии,
привели к разработке групп управления версии 2.
Группа управления версии 2 (cgroups-v2) обеспечивает единую иерархию группы
управления, в которой монтируются все контроллеры ресурсов.
Поведение управляющего файла и его наименование одинаковы для разных
контроллеров.
Контроллеры ресурсов ядра
Функциональность контрольных групп обеспечивается контроллерами ресурсов
ядра. SberLinux поддерживает различные контроллеры для контрольных групп версии
1 (cgroups-v1) и контрольных групп версии 2 (cgroups-v2).
Контроллер ресурсов, также называемый подсистемой группы управления,
представляет собой подсистему ядра, представляющую один ресурс, такой как
процессорное время, память, пропускная способность сети или дисковый ввод-вывод.
Ядро Linux предоставляет ряд контроллеров ресурсов, которые автоматически
монтируются системой systemd и диспетчером служб. Найдите список
смонтированных в данный момент контроллеров ресурсов в /proc/cgroups файле.
Доступны следующие контроллеры cgroups-v1:
•
•
•
•
•
•
•
•
blkio - может устанавливать ограничения на доступ ввода/вывода к блочным
устройствам и от них.
cpu- может настраивать параметры планировщика Completely Fair Scheduler
(CFS) для задач контрольной группы. Монтируется вместе со cpuacct
контроллером на одном креплении.
cpuacct - создает автоматические отчеты по ресурсам процессора,
используемым задачами в контрольной группе. Монтируется вместе со cpu
контроллером на одном креплении.
cpuset - может использоваться для ограничения задач группы управления
только на указанном подмножестве ЦП и указания задачам использовать
память только на указанных узлах памяти.
devices - может контролировать доступ к устройствам для задач в группе
управления.
freezer - может использоваться для приостановки или возобновления задач в
контрольной группе.
memory - может использоваться для установки ограничений на использование
памяти задачами в контрольной группе и генерирует автоматические отчеты
о ресурсах памяти, используемых этими задачами.
net_cls - может помечать сетевые пакеты идентификатором класса (classid),
что позволяет контроллеру трафика Linux ( tc команде) идентифицировать
пакеты, исходящие от конкретной задачи группы управления. Подсистема
net_cls.
470
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
•
•
•
•
net_filter iptables) - может использовать этот тег для выполнения действий с
такими пакетами. Сетевые сокеты net_filter помечаются идентификатором
межсетевого экрана (fwid), который позволяет межсетевому экрану Linux (через
iptables команду) идентифицировать пакеты, исходящие от конкретной задачи
группы управления.
net_prio - может устанавливать приоритет сетевого трафика.
pids - может устанавливать лимиты на количество процессов и их потомков в
контрольной группе.
perf_event - может группировать задачи для мониторинга с помощью perf
утилиты мониторинга производительности и создания отчетов.
rdma - может устанавливать ограничения на определенные ресурсы Remote
Direct Memory Access/InfiniBand в контрольной группе.
hugetlb - может использоваться для ограничения использования страниц
виртуальной памяти большого размера задачами в контрольной группе.
Доступны следующие контроллеры cgroups-v2:
•
•
•
•
•
•
•
io - Продолжение blkio из cgroups-v1;
memory - Продолжение memory из cgroups-v1;
pids - То же, что и pids из cgroups-v1;
rdma - То же, что и rdma из cgroups-v1;
cpu - Продолжение cpu и cpuacct из cgroups-v1;
cpuset - Поддерживает только основные функции(cpus{,.effective},
mems{,.effective}) с новой функцией разделов;
perf_event - Встроенная поддержка, нет явного управляющего файла. Можно
указать v2 cgroupв качестве параметра perf команды, которая будет
профилировать все задачи в этом файле cgroup.
Пространства имен
Пространства имен — один из наиболее важных методов организации и
идентификации программных объектов.
Пространство имен заключает глобальный системный ресурс (например, точку
монтирования, сетевое устройство или имя хоста) в абстракцию, благодаря
которой для процессов внутри пространства имен кажется, что у них есть
собственный изолированный экземпляр глобального ресурса. Одной из наиболее
распространенных технологий, использующих пространства имен, являются
контейнеры.
Изменения конкретного глобального ресурса видны только процессам в этом
пространстве имен и не влияют на остальную часть системы или другие
пространства имен.
471
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Чтобы проверить, членом каких пространств имен является процесс, Можно
проверить символические ссылки в каталоге /proc//ns/.
В следующей таблице показаны поддерживаемые пространства имен и ресурсы,
которые они изолируют:
Пространство имен
Ресурсы
Mount
Точки монтирования
UTS
Имя хоста и доменное имя NIS
IPC
System V IPC, очереди сообщений POSIX
PID
Идентификаторы процессов
Network
Сетевые устройства, стеки, порты и т. д.
User
Идентификаторы пользователей и групп
Control groups
Корневой каталог группы управления
Установка ограничений ЦП для приложений с помощью cgroups-v1
Иногда приложение потребляет много процессорного времени, что может негативно
сказаться на общем состоянии среды. Используйте виртуальную файловую систему
/sys/fs/, чтобы настроить ограничения ЦП для приложения с помощью контрольных
групп версии 1 (cgroups-v1).
Предварительные условия:
•
•
•
Права root пользователя.
Существует приложение, потребление ЦП которого нужно ограничить.
Контроллеры службы смонтированы.
## mount -l | grep cgroup
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup
(rw,nosuid,nodev,noexec,relatime,seclabel,xattr,release_agent=/usr/lib/systemd/systemd-cgroupsagent,name=systemd)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup
(rw,nosuid,nodev,noexec,relatime,seclabel,cpu,cpuacct)
cgroup on /sys/fs/cgroup/perf_event type cgroup
(rw,nosuid,nodev,noexec,relatime,seclabel,perf_event)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,pids)
...
Процедура:
472
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Определите идентификатор процесса (PID) приложения, которое необходимо
ограничить потреблением ЦП:
## top
top - 12:28:42 up 1:06, 1 user, load average: 1.02, 1.02, 1.00
Tasks: 266 total, 6 running, 260 sleeping, 0 stopped, 0 zombie
%Cpu(s): 11.0 us, 1.2 sy, 0.0 ni, 87.5 id, 0.0 wa, 0.2 hi, 0.0 si, 0.2 st
MiB Mem : 1826.8 total, 287.1 free, 1054.4 used, 485.3 buff/cache
MiB Swap: 1536.0 total, 1396.7 free, 139.2 used. 608.3 avail Mem
PID USER
6955 root
5760 jdoe
6448 jdoe
505 root
4217 root
...
PR
20
20
20
20
20
NI
VIRT
RES SHR S %CPU %MEM TIME+ COMMAND
0 228440 1752 1472 R 20.6
0.1 47:11.43 sha1sum
0 3604956 208832 65316 R
2.3
11.2 0:43.50 gnome-shell
0 743836 31736 19488 S
0.7
1.7 0:08.25 gnome-terminal0
0
0
0 I
0.3
0.0 0:03.39 kworker/u4:4-events_unbound
0 74192
1612 1320 S 0.3
0.1 0:01.19 spice-vdagentd
Пример вывода top программы показывает, что PID 6955 (иллюстративное
приложение sha1sum) потребляет много ресурсов ЦП.
1.
Создайте подкаталог в каталоге cpu контроллера ресурсов:
## mkdir /sys/fs/cgroup/cpu/Example/
Вышеупомянутый каталог представляет собой группу управления, в которую нужно
поместить определенные процессы и применить к ним определенные ограничения ЦП.
В то же время в каталоге будут созданы некоторые файлы интерфейса cgroups-v1 и
файлы, относящиеся к контроллеру cpu.
2.
Настройте лимиты cpu для контрольной группы:
## ll /sys/fs/cgroup/cpu/Example/
-rw-r—r--. 1 root root 0 Mar 11 11:42 cgroup.clone_children
-rw-r—r--. 1 root root 0 Mar 11 11:42 cgroup.procs
-r—r—r--. 1 root root 0 Mar 11 11:42 cpuacct.stat
-rw-r—r--. 1 root root 0 Mar 11 11:42 cpuacct.usage
-r—r—r--. 1 root root 0 Mar 11 11:42 cpuacct.usage_all
-r—r—r--. 1 root root 0 Mar 11 11:42 cpuacct.usage_percpu
-r—r—r--. 1 root root 0 Mar 11 11:42 cpuacct.usage_percpu_sys
-r—r—r--. 1 root root 0 Mar 11 11:42 cpuacct.usage_percpu_user
-r—r—r--. 1 root root 0 Mar 11 11:42 cpuacct.usage_sys
-r—r—r--. 1 root root 0 Mar 11 11:42 cpuacct.usage_user
473
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
-rw-r—r--. 1 root root 0 Mar 11 11:42 cpu.cfs_period_us
-rw-r—r--. 1 root root 0 Mar 11 11:42 cpu.cfs_quota_us
-rw-r—r--. 1 root root 0 Mar 11 11:42 cpu.rt_period_us
-rw-r—r--. 1 root root 0 Mar 11 11:42 cpu.rt_runtime_us
-rw-r—r--. 1 root root 0 Mar 11 11:42 cpu.shares
-r—r—r--. 1 root root 0 Mar 11 11:42 cpu.stat
-rw-r—r--. 1 root root 0 Mar 11 11:42 notify_on_release
-rw-r—r--. 1 root root 0 Mar 11 11:42 tasks
Файл cpu.cfs_period_us представляет собой период времени в микросекундах (мкс,
представленный здесь как нас) для того, как часто должен перераспределяться
доступ контрольной группы к ресурсам ЦП. Верхний предел составляет 1 секунду, а
нижний предел — 1000 микросекунд.
Файл cpu.cfs_quota_us представляет собой общее количество времени в
микросекундах, в течение которого все процессы в группе управления могут
выполняться в течение одного периода (как определено параметром
cpu.cfs_period_us). Как только процессы в контрольной группе в течение одного
периода израсходуют все время, указанное в квоте, они будут регулироваться на
оставшуюся часть периода, и им не разрешается выполняться до следующего
периода. Нижний предел составляет 1000 микросекунд.
Приведенные выше примеры команд устанавливают ограничения времени ЦП, чтобы
все процессы в совокупности в Example группе управления могли работать только в
течение 0,2 секунды (определяется cpu.cfs_quota_us) из каждой 1 секунды
(определяется cpu.cfs_period_us).
3.
Добавьте PID приложения в Example группу управления:
## echo "6955" > /sys/fs/cgroup/cpu/Example/cgroup.procs
или
## echo "6955" > /sys/fs/cgroup/cpu/Example/tasks
Предыдущая команда гарантирует, что желаемое приложение станет членом
Example контрольной группы и, следовательно, не превысит ограничения ЦП,
настроенные для Example контрольной группы. PID должен представлять
существующий процесс в системе. Здесь PID 6955 был назначен процессу sha1sum
/dev/zero &, используемый для иллюстрации варианта использования cpu
контроллера.
4.
Убедитесь, что приложение работает в указанной группе управления:
474
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## cat /proc/6955/cgroup
12:cpuset:/
11:hugetlb:/
10:net_cls,net_prio:/
9:memory:/user.slice/user-1000.slice/[email protected]
8:devices:/user.slice
7:blkio:/
6:freezer:/
5:rdma:/
4:pids:/user.slice/user-1000.slice/[email protected]
3:perf_event:/
2:cpu,cpuacct:/Example
1:name=systemd:/user.slice/user-1000.slice/[email protected]/terminal-server.service
В приведенном выше примере выходных данных показано, что процесс нужного
приложения выполняется в группе управления Example, которая применяет
ограничения cpu к процессу приложения.
5.
Определите текущее потребление cpu регулируемым приложением:
## top
top - 12:28:42 up 1:06, 1 user, load average: 1.02, 1.02, 1.00
Tasks: 266 total, 6 running, 260 sleeping, 0 stopped, 0 zombie
%Cpu(s): 11.0 us, 1.2 sy, 0.0 ni, 87.5 id, 0.0 wa, 0.2 hi, 0.0 si, 0.2 st
MiB Mem : 1826.8 total, 287.1 free, 1054.4 used, 485.3 buff/cache
MiB Swap: 1536.0 total, 1396.7 free, 139.2 used. 608.3 avail Mem
PID USER
6955 root
5760 jdoe
6448 jdoe
505 root
4217 root
...
PR
20
20
20
20
20
NI
VIRT
RES SHR S %CPU %MEM TIME+ COMMAND
0 228440 1752 1472 R 20.6
0.1 47:11.43 sha1sum
0 3604956 208832 65316 R
2.3
11.2 0:43.50 gnome-shell
0 743836 31736 19488 S
0.7
1.7 0:08.25 gnome-terminal0
0
0
0 I
0.3
0.0 0:03.39 kworker/u4:4-events_unbound
0 74192
1612 1320 S 0.3
0.1 0:01.19 spice-vdagentd
Обратите внимание, что потребление ЦП PID 6955уменьшилось с 99% до 20%.
Примечание: Аналогом cgroups-v2 для cpu.cfs_period_us и cpu.cfs_quota_us является
cpu.max файл. Файл cpu.max доступен через cpu контроллер.
475
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Настройка политик CPU Affinity и NUMA с помощью systemd
Параметры управления ЦП, управления памятью и пропускной способности вводавывода связаны с разделением доступных ресурсов.
Настройка привязки ЦП с помощью systemd
Настройки привязки ЦП помогают ограничить доступ определенного процесса к
некоторым ЦП. По сути, планировщик ЦП никогда не планирует выполнение процесса
на ЦП, который не находится в маске сходства процесса.
Маска привязки ЦП по умолчанию применяется ко всем службам, управляемым systemd.
Чтобы настроить маску соответствия ЦП для конкретной службы systemd, systemd
предоставляет CPUAffinity= как параметр файла модуля, так и параметр
конфигурации менеджера в файле /etc/systemd/system.conf.
Параметр файла модуля CPUAffinity= задает список ЦП или диапазонов ЦП, которые
объединяются и используются в качестве маски сходства. Параметр CPUAffinity в
файле /etc/systemd/system.conf определяет маску сходства для процесса с
идентификационным номером (PID) 1 и всех процессов, ответвленных от PID1. Затем
нужно переопределить CPUAffinity для каждой службы.
Примечание: После настройки маски соответствия ЦП для конкретной службы
systemdнеобходимо перезапустить систему, чтобы изменения вступили в силу.
Процедура:
Чтобы установить маску привязки ЦП для конкретной службы systemd, используя
параметр файла модуля CPUAffinity:
1.
Проверьте значения параметра файла модуля CPUAffinity в выбранном сервисе:
$ systemctl show --property <CPU affinity configuration option> <service name>
2.
В качестве пользователя root установите требуемое значение параметра
файла модуля CPUAffinity для диапазонов ЦП, используемых в качестве маски
сходства:
## systemctl set-property <service name> CPUAffinity=<value>
3.
Перезапустите службу, чтобы применить изменения.
## systemctl restart <service name>
476
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Чтобы установить маску соответствия ЦП для конкретной службы systemd,
используя параметр конфигурации менеджера:
1.
Отредактируйте файл /etc/systemd/system.conf:
## vi /etc/systemd/system.conf
2.
Найдите параметр CPUAffinity= и установите номера процессоров.
3.
Сохраните отредактированный файл и перезапустите сервер, чтобы
изменения вступили в силу.
Настройка политик NUMA с помощью systemd
Non-uniform memory access (NUMA) — это конструкция подсистемы памяти
компьютера, в которой время доступа к памяти зависит от расположения
физической памяти относительно процессора.
Память, близкая к ЦП, имеет меньшую задержку (локальная память), чем память,
локальная для другого ЦП (внешняя память) или совместно используемая набором ЦП.
Что касается ядра Linux, политика NUMA определяет, где (например, на каких узлах
NUMA) ядро выделяет страницы физической памяти для процесса.
systemd предоставляет параметры файла модуля NUMAPolicy и NUMAMask для
управления политиками выделения памяти для служб.
Процедура:
Чтобы установить политику памяти NUMA с помощью параметра файла модуля
NUMAPolicy:
1.
Проверьте значения параметра файла модуля NUMAPolicy в выбранном сервисе:
$ systemctl show --property <NUMA policy configuration option> <service name>
2.
В качестве пользователя root установите требуемый тип политики в
параметре модуля NUMAPolicy:
## systemctl set-property <service name> NUMAPolicy=<value>
3.
Перезапустите службу, чтобы применить изменения.
## systemctl restart <service name>
477
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Чтобы установить глобальный параметр NUMAPolicy с помощью параметра
конфигурации менеджера:
1.
Найдите в файле /etc/systemd/system.conf параметр NUMAPolicy.
2.
Измените тип политики, сохраните файл.
3.
Перезагрузите конфигурацию systemd службы:
## systemd daemon-reload
4.
Перезагрузите сервер.
Предупреждение: При настройке строгой политики NUMA, например bind, убедитесь,
что также правильно установлен параметр файла модуля CPUAffinity=.
Параметры конфигурации политики NUMA для systemd
Systemd предоставляет следующие параметры для настройки политики NUMA:
NUMAPolicy
Управляет политикой памяти NUMA исполняемых процессов. Возможны следующие
типы политик:
•
•
•
•
•
default;
preferred;
bind;
interleave;
local.
NUMAMask
Управляет списком узлов NUMA, связанным с выбранной политикой NUMA.
Обратите внимание, что параметр NUMAMask не требуется указывать для
следующих политик:
•
•
default;
local.
Для предпочтительной политики в списке указан только один узел NUMA.
Повышение безопасности с помощью подсистемы целостности ядра
Можно усилить защиту своей системы, используя компоненты подсистемы
целостности ядра. В следующих разделах представлены соответствующие
компоненты и даны рекомендации по их настройке.
478
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Подсистема целостности ядра
Подсистема целостности — это часть ядра, отвечающая за поддержание
целостности данных всей системы. Эта подсистема помогает сохранить состояние
определенной системы неизменным с момента ее создания и, таким образом,
предотвращает нежелательное изменение определенных системных файлов.
Подсистема целостности ядра может использовать доверенный платформенный
модуль (TPM), чтобы повысить безопасность системы. TPM — это спецификация
Trusted Computing Group (TCG) для важных криптографических функций. Модули TPM
обычно представляют собой специальное аппаратное обеспечение, которое
подключается к материнской плате платформы и предотвращает программные
атаки, предоставляя криптографические функции из защищенной и защищенной от
несанкционированного доступа области аппаратного чипа. Некоторые из функций
TPM:
•
•
•
•
Генератор случайных чисел;
Генератор и безопасное хранилище криптографических ключей;
хеш-генератор;
Удаленная аттестация.
Надежные и зашифрованные ключи
В следующем разделе представлены доверенные и зашифрованные ключи как важная
часть повышения безопасности системы.
Надежные и зашифрованные ключи — это симметричные ключи переменной длины,
сгенерированные ядром, которые используют службу набора ключей ядра. Тот факт,
что этот тип ключей никогда не появляется в пользовательском пространстве в
незашифрованном виде, означает, что их целостность может быть проверена.
Программы пользовательского уровня могут получить доступ к ключам только в виде
зашифрованных больших двоичных объектов.
Для доверенных ключей требуется аппаратный компонент: микросхема доверенного
платформенного модуля (Trusted Platform Module (TPM)), которая используется как
для создания, так и для шифрования (запечатывания) ключей. Доверенный
платформенный модуль запечатывает ключи с помощью 2048-битного ключа RSA,
называемого корневым ключом хранилища (storage root key (SRK)).
Примечание: Чтобы использовать спецификацию TPM 1.2, включите и активируйте ее
с помощью параметра микропрограммы машины или с помощью команды tpm_setactive
из пакета утилит tpm-tools. Кроме того, необходимо установить программный стек
TrouSers и запустить демон tcsd для связи с TPM (выделенным оборудованием). Демон
tcsd является частью пакета TrouSers, который доступен в пакете TrouSers. В более
позднем и обратно несовместимом TPM 2.0 используется другой программный стек, в
479
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
котором утилиты tpm2-tools или ibm-tss предоставляют доступ к выделенному
оборудованию.
Кроме того, пользователь может запечатать доверенные ключи с помощью набора
значений для регистра конфигурации платформы (platform configuration register (PCR))
TPM. PCR содержит набор значений управления целостностью, которые отражают
встроенное ПО, загрузчик и операционную систему. Это означает, что ключи,
запечатанные PCR, могут быть расшифрованы доверенным платформенным модулем
только в той же системе, в которой они были зашифрованы. Однако, как только
доверенный ключ, запечатанный PCR, загружен (добавлен в связку ключей) и, таким
образом, проверены связанные с ним значения PCR, он может быть обновлен новыми
(или будущими) значениями PCR, так что новое ядро, например, может быть
загруженным. Один ключ также можно сохранить в виде нескольких больших двоичных
объектов, каждый из которых имеет разные значения PCR.
Зашифрованные ключи не требуют доверенного платформенного модуля, поскольку
они используют расширенный стандарт шифрования ядра (Advanced Encryption
Standard (AES)), что делает их быстрее, чем доверенные ключи. Зашифрованные ключи
создаются с использованием случайных чисел, сгенерированных ядром, и шифруются
главным ключом при экспорте в большие двоичные объекты пользовательского
пространства. Главный ключ — это либо доверенный ключ, либо пользовательский
ключ. Если мастер-ключ не является доверенным, зашифрованный ключ безопасен
настолько, насколько безопасен пользовательский ключ, используемый для его
шифрования.
Работа с доверенными ключами
В следующем разделе описывается, как создавать, экспортировать, загружать или
обновлять доверенные ключи с помощью утилиты keyctl для повышения безопасности
системы.
Предварительные условия:
•
•
Необходимо загрузить доверенный модуль ядра. Дополнительные сведения о
загрузке модулей ядра см. в разделе «Управление модулями ядра».
Доверенный платформенный модуль (TPM) должен быть включен и активен.
Дополнительные сведения о TPM см. в разделах “Подсистема целостности
ядра” и «Доверенные и зашифрованные ключи».
Процедура:
1.
Чтобы создать доверенный ключ с помощью TPM, выполните:
## keyctl **Add** trusted <name> "new <key_length> [options]" <key_ring>
•
На основе синтаксиса создайте пример команды следующим образом:
480
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## keyctl **Add** trusted kmk "new 32" @u
642500861
Команда создает доверенный ключ kmk длиной 32 байта (256 бит) и помещает его в
связку ключей пользователя (@u). Ключи могут иметь длину от 32 до 128 байт (от
256 до 1024 бит).
•
Чтобы просмотреть текущую структуру связок ключей ядра:
## keyctl show
Session Keyring
-3 --alswrv 500 500 keyring: ses 97833714 --alswrv 500 -1 \ keyring: uid.1000 642500861 --alswrv 500
500 \ trusted: kmk
•
Чтобы экспортировать ключ в большой двоичный объект пользовательского
пространства, выполните:
## keyctl pipe 642500861 > kmk.blob
Команда использует pipe подкоманду и серийный номер файла kmk.
•
Чтобы загрузить доверенный ключ из большого двоичного объекта
пользовательского пространства, используйте add подкоманду с большим
двоичным объектом в качестве аргумента:
## keyctl **Add** trusted kmk "load `cat kmk.blob`" @u
268728824
•
Создайте безопасные зашифрованные ключи на основе доверенного ключа,
запечатанного TPM:
## keyctl **Add** encrypted <pass:quotes[name]> "new [format]
<pass:quotes[key_type]>:<pass:quotes[primary_key_name]> <pass:quotes[keylength]>"
<pass:quotes[key_ring]>
•
На основе синтаксиса сгенерируйте зашифрованный ключ, используя уже
созданный доверенный ключ:
## keyctl **Add** encrypted encr-key "new trusted:kmk 32" @u
481
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
159771175
Команда использует доверенный ключ, запечатанный TPM (kmk), созданный на
предыдущем шаге, в качестве первичного ключа для создания зашифрованных ключей.
Работа с зашифрованными ключами
В следующем разделе описывается управление зашифрованными ключами для
повышения безопасности в системах, в которых недоступен доверенный
платформенный модуль (TPM).
Предварительные условия:
Необходимо загрузить encrypted-keys модуль ядра. Дополнительные сведения о
загрузке модулей ядра см. в разделе «Управление модулями ядра».
Процедура:
1.
Используйте случайную последовательность чисел для генерации
пользовательского ключа:
## keyctl **Add** user kmk-user "$(dd if=/dev/urandom bs=1 count=32 2>/dev/null)" @u
427069434
Команда генерирует пользовательский ключ с именем kmk-user, который действует
как первичный ключ и используется для запечатывания фактических зашифрованных
ключей.
2.
Сгенерируйте зашифрованный ключ, используя первичный ключ из предыдущего
шага:
## keyctl **Add** encrypted encr-key "new user:kmk-user 32" @u
1012412758
3.
При необходимости перечислите все ключи в указанной связке ключей
пользователя:
## keyctl list @u
2 keys in keyring:
427069434: --alswrv 1000 1000 user: kmk-user
1012412758: --alswrv 1000 1000 encrypted: encr-key
482
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Примечание: Имейте в виду, что зашифрованные ключи, которые не запечатаны
доверенным первичным ключом, настолько же безопасны, как первичный ключ
пользователя (ключ со случайным числом) для их шифрования. Следовательно,
первичный пользовательский ключ следует загружать как можно более надежно и
предпочтительно в самом начале процесса загрузки.
Руководство пользователя без привилегий и администратора без
привилегии root
Аутентификация и авторизация
Авторизация при помощи логина и пароля
Профиль пользователя - это набор файлов, который описывает, как будет
выглядеть результирующая конфигурация подключаемых модулей аутентификации
(PAM) и служб сетевой безопасности (NSS).
Если хеш совпадает - PAM-модулю по netlink от модуля ядра должно возвращаться
имя пользователя, которому соответствует хеш в БД пользователей. Данного
пользователя PAM-модуль пропускает и запускает его shell;
Чтобы войти в SberLinux:
После перехода к консоли на экране монитора появится приглашение командной
строки. Для входа в систему следует ввести имя учетной записи пользователя и
пароль.
1.
В окне ввода логина и пароля, введите логин и пароль (окно логина и пароля
представлено на рисунке), полученный от администратора.
Рисунок. Окно ввода логина и пароля
На экране монитора появится приглашение командной строки.
483
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Использование команды su
Команда su позволяет пользователям открывать окно терминала и с этого
терминала запускать вспомогательную оболочку, в которой у пользователя есть
другой идентификатор. Например, для выполнения административных задач можно
войти в систему с учетной записью обычного пользователя и набрать su, чтобы
открыть root-оболочку. Это приносит то преимущество, что только в root-оболочке
используются root-привилегии.
Если набрана только команда su, подразумевается имя пользователя root. Но su
можно использовать для запуска задач от имени другого пользователя. Например,
введите su user, чтобы открыть подоболочку от имени пользователя user. При
использовании su в качестве обычного пользователя будет предложено ввести
пароль, и после ввода будут получены учетные данные целевого пользователя:
[user@localhost ~]$ su
Password:
[root@localhost user]#
При использовании su запускается вложенная оболочка. Это среда, в которой можно
работать как целевая учетная запись пользователя, но параметры среды для этой
учетной записи не установлены. Если нужен полный доступ ко всей среде целевой
учетной записи пользователя, можно использовать su для запуска оболочки входа.
Если запускается оболочка входа в систему, все сценарии, составляющие
пользовательскую среду, будут обработаны, что заставит работать в среде, точно
такой же, как при входе в систему от имени этого пользователя.
Использование команды sudo
Вместо использования учетной записи root, непривилегированные пользователи
могут быть настроены на использование разрешений администратора для
определенных задач с помощью sudo. Когда sudo настроен, обычные пользователи
имеют привилегии sudo, и для использования этих привилегий они запускают команду
с помощью sudo. Таким образом, вместо использования таких команд, как useradd в
качестве пользователя root, используете обычную учетную запись пользователя и
набираете sudo useradd. Это определенно более безопасно, потому что можно
действовать так, как если бы были права администратора при выполнении этой
конкретной команды.
Пример переключения учетных записей пользователей
1.
Войдите в систему под обычным пользователем;
484
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
2.
Введите whoami, чтобы увидеть, какая учетная запись используется в данный
момент. Также введите idи обратите внимание, что получено больше
информации о текущих учетных данных при использовании id;
3.
Наберите su. При запросе пароля введите пароль root. Введите idеще раз,
чтобы получить права root;
4.
Введите visudo и убедитесь, что строка %wheel ALL=(ALL) ALL включена;
5.
Введите useradd -G wheel user, чтобы создать пользователя user, который
является членом группы wheel;
6.
Введите id user, чтобы убедиться, что он добавлен в группу wheel;
7.
Установите пароль для User, введя passwd user. Введите пароль дважды;
8.
Выйдите из системы и войдите в систему как user;
9.
Наберите sudo useradd user1. Введите пароль при запросе. Будет создан еще
один пользователь.
Клиент SSH
Клиентом является команда ssh. Синтаксис командной строки представлен ниже:
ssh [-afgknqstvxACNTX1246] [-b bind_address] [-c cipher_spec] [-e escape_char]
[-i identity_file] [-login_name] [-m mac_spec] [-o option] [-p port]
[-F configfile] [-L port:host:hostport] [-R port:host:hostport]
[-D port] hostname | user@hostname [command]
Подробно со значениями флагов можно ознакомиться в руководстве man (справочные
страницы). В простом варианте инициировать соединение с сервером sshd можно
командой:
ssh <имя_клиента>@10.1.1.170
где 10.1.1.170 — IP-адрес компьютера с запущенной службой sshd.
Если используется парольная аутентификация, на сервере должна существовать
учетная запись с таким именем. Команда ssh берет свои конфигурационные
установки сначала из командной строки, затем из пользовательского файла
$HOME/.ssh/config и из общесистемного файла /etc/ssh/ssh_config. Если идентичные
параметры заданы по-разному, выбирается самое первое значение. Клиентские
конфигурационные файлы бывают глобальными, на уровне системы
(/etc/ssh/ssh_config), и локальными, на уровне отдельного пользователя
485
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
($HOME/.ssh/config). Следовательно, пользователь может полностью
контролировать конфигурацию клиентской части SSH.
Конфигурационные файлы разбиты на разделы, установки которых относятся к
отдельной машине, группе или ко всем машинам. Установки разных разделов могут
перекрывать друг друга. При наличии нескольких параметров, конфликтующих друг с
другом, предпочтение отдается тому, который указан раньше. Порядок анализа
значений таков: сначала аргументы командной строки, потом конфигурационный
файл пользователя, и, наконец, системный конфигурационный файл. В каждом из
случаев берется первое обнаруженное значение параметра. Другими словами, если
параметр встречается в нескольких разделах файла, выбирается самый первый
вариант.
Дополнительные источники:
Описание интерпретатора приведено в справочных страницах man ssh.
Создание пары ключей SSH
Используйте эту процедуру для создания пары ключей SSH в локальной системе и
копирования сгенерированного открытого ключа на сервер OpenSSH. Если сервер
настроен соответствующим образом, можно войти на сервер OpenSSH без указания
какого-либо пароля.
Примечание: Выполните следующие действия от имени root, так как только root
сможет использовать ключи.
Процедура:
Чтобы сгенерировать пару ключей ECDSA для версии 2 протокола SSH, введите:
$ ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/joesec/.ssh/id_ecdsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/joesec/.ssh/id_ecdsa.
Your public key has been saved in /home/joesec/.ssh/id_ecdsa.pub.
The key fingerprint is:
SHA256:Q/x+qms4j7PCQ0qFd09iZEFHA+SqwBKRNaU72oZfaCI [email protected]
The key's randomart image is:
+---[ECDSA 256]---+
|.oo..o=++ |
|.. o .oo . |
|. .. o. o |
|....o.+... |
486
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
|o.oo.o +S . |
|.=.+. .o |
|E.*+. . . . |
|.=..+ +.. o |
| . oo*+o. |
+----[SHA256]-----+
Также можно сгенерировать пару ключей RSA, используя опцию -t rsa с командой sshkeygen, или пару ключей Ed25519, введя команду ssh-keygen -t ed25519.
2.
Скопируйте открытый ключ на удаленную машину:
$ ssh-copy-id [email protected]
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already
installed
[email protected]'s password:
..
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'" and check to make sure
that only the key(s) you wanted were added.
Теперь войдите в систему с помощью: ssh ‘[email protected]’ и проверьте,
что были добавлены только те ключи, которые необходимы. Если не используете
программу ssh-agent в своем сеансе, предыдущая команда копирует самый последний
измененный открытый ключ **~/.ssh/id*.pub, если он еще не установлен. Чтобы
указать другой файл с открытым ключом или установить приоритет ключей в
файлах над ключами, кешированными в памяти ssh-агентом, используйте команду
ssh-copy-id с опцией -i**.
Примечание: Если переустановите свою систему и хотите сохранить ранее
сгенерированные пары ключей, создайте резервную копию каталога ~/.ssh/. После
переустановки скопируйте его обратно в свой домашний каталог. Можно сделать
это для всех пользователей системы, включая пользователя root.
Проверка:
Войдите на сервер OpenSSH без указания какого-либо пароля:
$ ssh [email protected]
Welcome message.
...
487
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Last login: Mon Nov 18 18:28:42 2019 from ::1
Аутентификация по файлам /etc/shadow
Следующие поля определены в /etc/shadow (ниже на рисунке):
•
•
•
•
•
•
•
•
•
Имя для входа: обратите внимание, что /etc/shadow не содержит никаких UID, а
только имена пользователей. Это открывает возможность для нескольких
пользователей использовать один и тот же UID, но разные пароли (что,
кстати, не очень рекомендуется);
Зашифрованный пароль: в этом поле содержится все, что необходимо для
безопасного хранения пароля;
Дни с 1 января 1970 года, когда пароль последний раз изменялся: многие вещи в
Linux относятся к этой дате, которая в Linux считается началом дней. Это
также упоминается как эпоха;
За несколько дней до того, как пароль может быть изменен: это позволяет
системным администраторам использовать более строгую политику паролей,
когда невозможно сразу вернуться к исходному паролю, если пароль был
изменен. Обычно это поле имеет значение 0;
Дни, после которых пароль должен быть изменен: в этом поле указан
максимальный срок действия паролей. Обратите внимание, что по умолчанию
он установлен на 99 999 (около 273 лет);
За несколько дней до истечения срока действия пароля пользователь получает
предупреждение: это поле используется для предупреждения пользователя о
предстоящей смене пароля. Обратите внимание, что по умолчанию
установлено значение 7 (даже если срок действия пароля установлен на 99 999
дней!);
Через несколько дней после истечения срока действия пароля эта учетная
запись отключена: используйте это поле для принудительного изменения
пароля. После истечения срока действия пароля пользователи больше не могут
входить в систему;
Дни с 1 января 1970 года эта учетная запись отключена: администратор
может установить это поле, чтобы отключить учетную запись. Обычно это
лучший подход, чем удаление учетной записи, поскольку все связанные свойства
и файлы этой учетной записи будут сохранены, но больше не могут
использоваться для аутентификации на сервере;
Зарезервированное поле, которое когда-то было добавлено «для будущего
использования»: это было давно; это поле, вероятно, никогда не будет
использовано.
Большинством свойств пароля можно управлять с помощью команды passwd или
chage, которые обсуждаются далее.
488
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Рисунок. Поля /etc/shadow
Смена пароля и завершение сессии
Смена пароля из командной строки
Существует возможность использовать две команды для изменения свойств пароля
для пользователей: chage и passwd. Например, команда passwd -n 30 -w 3 -x 90 user
устанавливает для пароля пользователя user минимальный период использования 30
дней и срок его действия через 90 дней, когда за 3 дня до истечения срока действия
генерируется предупреждение.
Многие из задач, которые можно выполнить с помощью passwd, можно выполнить и с
помощью chage. Например, используйте chage -E 2022-12-31 user1, чтобы срок
действия учетной записи пользователя user1 истек 31 декабря 2022 г.
Чтобы увидеть текущие настройки управления паролями, используйте chage –l.
Чтобы изменить пароль:
1.
Введите passwd в командной строке и нажмите клавишу Enter. Команда passwd
предложит ввести старый пароль.
2.
Введите старый пароль.
Примечание: Для защиты символы пароля не будут отображаться на экране во время
ввода.
3.
Введите новый пароль и нажмите клавишу Enter.
4.
Еще раз введите новый пароль для подтверждения и снова нажмите клавишу
Enter.
Завершение пользовательской сессии
С помощью команды shutdown можно отключить пользовательскую сессию из
командной строки.
489
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Впишите команду shutdown.
$ shutdown
Команда немедленно отключает компьютер.
2.
Впишите команду $ shutdown c указанием временных рамок отключения
выбранной опции:
$ shutdown [options] [time] [message]
Например, $ shutdown -h now
Параметр options задает параметры отключения. Параметр time можно задавать в
виде чч:мм (hh:mm) в 24 часовом формате. Также можно использовать минуты,
указывающие через сколько минут от текущего момента нужно выключить
компьютер. Также доступна константа now, указывающая, что выключать нужно
прямо сейчас. Параметр message позволяет задать сообщение, которое будет
выведено в терминал перед выключением.
3.
Впишите команду poweroff для выхода из SberLinux:
$ poweroff
4.
Впишите команду reboot для перезагрузки системы.
$ reboot
5.
Впишите команду exit для завершения сеанса текущего пользователя.
$ exit
Для остановки всех сессий пользователя можно воспользоваться командной pkill. pkill
- это утилита командной строки, которая отправляет сигналы процессам
запущенной программы на основе заданных критериев. Процессы могут быть указаны
их полными или частичными именами, пользователем, запускающим процесс, или
другими атрибутами.
Выполните в терминале команду, например:
sudo pkill -9 -u username
Пользователь под номером 9 закончит все свои процессы.
490
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Работа с Shell
Говоря о командной строке, на самом деле мы имеем в виду командную оболочку
(shell). Командная оболочка — это программа, которая принимает команды,
введенные с клавиатуры, и передает их операционной системе для выполнения.
Практически все дистрибутивы Linux поставляются с командной оболочкой из
проекта GNU, которая называется bash. Имя bash — это аббревиатура от названия
Bourne Again Shell, отражающего тот факт, что bash является улучшенной заменой
sh, первоначальной командной оболочки для Unix.
Примечание: Если последний символ в приглашении — знак решетки (#), а не знак
доллара, это означает, что сеанс в терминале обладает привилегиями
суперпользователя.
1.
•
•
•
•
•
Выполните следующие команды:
hostname — выводит имя машины (сервера), на которой сейчас находитесь;
whoami — выводит логин (имя в системе);
tree -d / |less — псевдографическое изображение дерева каталогов на машине;
выход из пролистывания — q;
pwd — выводит каталог, в котором сейчас находитесь; в командной строке
пользователь не может быть «просто так», он находится в каком-либо
каталоге (текущем и рабочем каталоге). Вероятно, текущий и рабочий каталог
выводятся в приглашении (prompt).
ls — список файлов в текущем каталоге; ls /home — список файлов в указанном
каталоге;
Получение информации о своем пользователе и своей группе
Вся информация о пользователях хранится в файле /etc/passwd.
Каждый аккаунт занимает одну строку, в формате
account:password:UID:GID:GECOS:directory:shell
Где:
•
•
•
•
•
•
•
account — имя пользователя.
password — зашифрованный пароль пользователя.
UID — идентификационный номер пользователя.
GID — идентификационный номер основной группы пользователя.
GECOS — необязательное поле, используемое для указания дополнительной
информации о пользователе (например, полное имя пользователя).
directory — домашний каталог ($HOME) пользователя.
shell — командный интерпретатор пользователя (обычно /bin/sh).
491
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Получение информации о пользователях
•
•
•
•
•
•
w – вывод информации (имя пользователя, рабочий терминал, время входа в
систему, информацию о потребленных ресурсах CPU и имя запущенной
программы) о всех вошедших в систему пользователях.
who – вывод информации (имя пользователя, рабочий терминал, время входа в
систему) о всех вошедших в систему пользователях.
who am i или whoami или id – вывод имени пользователя.
users – вывод имен пользователей, работающих в системе.
id – вывод об идентификаторах пользователя: его uid, имя_пользователя, gid и
имя первичной группы и список групп в которых состоит пользователь.
groups – вывод списка групп в которых состоит пользователь.
Добавление пользователя
Для добавления пользователя введите команду useradd.
sudo useradd <name>
Где name - это имя пользователя.
Ключи:
•
•
•
•
•
•
•
•
•
-b Базовый каталог. Это каталог, в котором будет создана домашняя папка
пользователя. По умолчанию /home.
-с Комментарий. В нем можно напечатать любой текст.
-d Название домашнего каталога. По умолчанию название совпадает с именем
создаваемого пользователя.
-e Дата, после которой пользователь будет отключен. Задается в формате
YYYY-MM-DD. По умолчанию отключено.
-f Количество дней, которые должны пройти после устаревания пароля до
блокировки пользователя, если пароль не будет изменен (период
неактивности). Если значение равно 0, то запись блокируется сразу после
устаревания пароля, при -1 - не блокируется. По умолчанию -1.
-g Первичная группа пользователя. Можно указывать как GID, так и имя группы.
Если параметр не задан будет создана новая группа название которой
совпадает с именем пользователя.
-G Список вторичных групп в которых находится создаваемый пользователь
-k Каталог шаблонов. Файлы и папки из этого каталога будут помещены в
домашнюю папку пользователя. По умолчанию /etc/skel.
-m Ключ, указывающий, что необходимо создать домашнюю папку. По
умолчанию домашняя папка не создается.
492
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
•
•
-p Зашифрованный пароль пользователя. По умолчанию пароль не задается, но
учетная пользователь будет заблокирован до установки пароля.
-s Оболочка, используемая пользователем. По умолчанию /bin/sh.
-u Вручную задать UID пользователю.
Если при создании пользователя не указываются дополнительные ключи, то берутся
настройки по умолчанию. Посмотреть настройки по-умолчанию можно с помощью
команды useradd -D. Если пользователя не устраивают настройки, можно поменять
их выполнив sudo useradd -D -s /bin/bash, где -s это ключ из таблицы выше.
Изменение пользователя
1.
Изменение параметров пользователя происходит с помощью утилиты usermod.
Используйте команду:
sudo usermod -c
Эта команда поменяет комментарий пользователю на name.
2.
Измените пароль пользователя при помощи утилиты passwd.
sudo passwd <namename>
Где namename - измененное имя пользователя.
Утилита passwd может использоваться и обычным пользователем для смены пароля.
Основные ключи passwd:
•
•
•
•
•
•
•
-d Удалить пароль пользователю. После этого пароль будет пустым, и
пользователь сможет входить в систему без предъявления пароля.
-e Сделать пароль устаревшим. Это заставит пользователя изменить пароль
при следующем входе в систему.
-i Заблокировать учетную запись пользователя по прошествии указанного
количества дней после устаревания пароля.
-n Минимальное количество дней между сменами пароля.
-x Максимальное количество дней, после которого необходимо обязательно
сменить пароль.
-l Заблокировать учетную запись пользователя.
-u Разблокировать учетную запись пользователя.
Удаление пользователя
1.
Чтобы удалить пользователя, воспользуйтесь командой userdel.
493
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
sudo userdel <name>
Пользователь name будет удален.
Пример использования:
•
•
-f Принудительно удалить пользователя, даже если он сейчас работает в
системе.
-r Удалить домашний каталог пользователя.
Управление группами
Создание группы
Чтобы добавить пользователя, воспользуйтесь командой groupadd.
sudo groupadd testgroup
Основные ключи:
•
•
•
-g Установить собственный GID.
-p Пароль группы.
-r Создать системную группу.
Изменение группы
Смените название группы, ее GID или пароль помощи команды groupmod.
sudo groupmod -n newtestgroup testgroup # Имя группы изменено с testgroup на newtestgroup
Ключи groupmod:
•
•
•
-g Установить другой GID.
-n Новое имя группы.
-p Изменить пароль группы.
Удаление группы
Команда groupdel не имеет никаких дополнительных параметров.
Удалите группу командой:
sudo groupdel <group>
494
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Где group - название группы.
Управление пользователями группы
Для управления пользователями группы используется утилита gpasswd.
Чтобы ввести пользователя в группу введите:
gpasswd -a <user> <group>
Где user - имя пользователя, group - название группы, куда нужно ввести этого
пользователя.
Чтобы вывести пользователей из группы:
gpasswd -d [user] [group]
Где user - имя пользователя, group - название группы, откуда нужно вывести этого
пользователя.
Файлы конфигурации
/etc/passwd
В файле /etc/passwd хранится вся информация о пользователях кроме пароля. Одна
строка из этого файла соответствует описанию одного пользователя.
Примерное содержание строки таково:
namename:x:1000:1000:Name Name:/home/nname:/bin/bash
Строка состоит из нескольких полей, каждое из которых отделено от другого
двоеточием. Значение каждого поля:
1.
namename - Имя пользователя для входа в систему.
2.
x - Необязательный зашифрованный пароль.
3.
1000 - Числовой идентификатор пользователя (UID).
4.
1000 - Числовой идентификатор группы (GID).
5.
Name Name - Поле комментария
6.
/home/nname - Домашний каталог пользователя.
7.
/bin/bash - Оболочка пользователя.
495
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Второе и последнее поля необязательные и могут не иметь значения.
/etc/group
В файле /etc/groupхранится информация о группах. Она записана в аналогичном
/etc/passwd виде:
namenamegroup:x:1000:namename,second name
Строка состоит из нескольких полей, каждое из которых отделено от другого
двоеточием. Значение каждого поля:
1.
namenamegroup - Название группы
2.
x - Необязательный зашифрованный пароль.
3.
1000 - Числовой идентификатор группы (GID).
4.
namename,second name - Список пользователей, находящихся в группе.
В этом файле второе и четвертое поля могут быть пустыми.
/etc/shadow
Файл /etc/shadow хранит в себе пароли, по этому права, установленные на этот
файл, не дают считать его простому пользователю. Пример одной из записей из
этого файла:
namename:xxx:15803:0:99999:7:::
Значение каждого поля:
1.
namename - Имя пользователя для входа в систему.
2.
xxx - Необязательный зашифрованный пароль.
3.
15803 - Дата последней смены пароля.
4.
0 - Минимальный срок действия пароля.
5.
99999 - Максимальный срок действия пароля.
6.
7 - Период предупреждения о пароле.
7.
[пусто] - Период неактивности пароля.
8.
[пусто] - Дата истечения срока действия учетной записи.
История команд (history)
Важное свойство полноценной командной строки — история команд.
496
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
1.
Выполните несколько команд: hostname, ls, pwd, whoami и нажмите клавишу
вверх. В строке ввода появится предыдущая команда.
2.
Клавишами вверх и вниз перемещайтесь вперед и назад по истории команд.
3.
Команды из истории редактировать. Отмотайте историю до команды ls,
добавьте к ней ключ -l (получилось ls -l <перед минусом пробел есть, а после —
нет>).
4.
Нажмите клавишу Enter — выполнится модифицированная команда.
Ключи и опции
У команды ls есть два варианта. Если вызвать ее, она выводит простой список:
[22:26]user@latitude-e7240:
~/shell-survival-quide> ls
Makefile shell-first-steps.md shell-first-steps.pdf
shell-survival-quide.md shell-survival-quide.pdf
Если же добавить ключ -l, к каждому файлу выводится подробная информация:
[22:28]user@latitude-e7240:
~/shell-survival-quide> ls -l
total 332
-rw-rw-r– 1 user user 198 Feb 13 11:48 Makefile
-rw-rw-r– 1 user user 15107 Feb 14 22:26 shell-first-steps.md
-rw-rw-r– 1 user user 146226 Feb 13 11:49 shell-first-steps.pdf
-rw-rw-r– 1 user user 16626 Feb 13 11:45 shell-survival-quide.md
-rw-rw-r– 1 user user 146203 Feb 13 11:35 shell-survival-quide.pdf
Примечание: если к вызову команды добавлять специальные модификаторы (ключи,
опции, параметры), поведение команды меняется. Кроме того, команды могут
принимать в качестве параметров имена файлов, каталогов или просто текстовые
строки.
Введите:
ls -ld /home
ls -l /home
grep root /etc/passwd
497
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
man
man — справка по командам и программам, доступным на машине, а также по
системным вызовам и стандартной библиотеке C.
1.
•
•
•
•
2.
Введите в командную строку команду на выбор из следующего списка:
man grep;
man atoi;
man chdir;
man man.
Пролистайте вперед или назад при помощи клавиш вверх, вниз/ PageUp,
PageDown/ ( ↑ ), (↓ ).
3.
При необходимости нажмите клавишу qдля выхода.
4.
Для поиска определенного текста в справочной статье нажмите / (слеш),
введите текст для поиска и нажмите Enter. Перемещение к следующим
вхождениям — клавиша n.
Все справочные статьи делятся на категории. Самые важные:
•
•
•
1 — исполняемые программы и Shell команды (wc, ls, pwd и т.п.);
2 — системные вызовы (fork, dup2 и т.п.)
3 — библиотечные функции (printf, scanf, cos, exec).
Указывать, из какой именно категории надо показать справку, нужно в случаях
совпадений имен. Например, man 3 printf описывает функцию из стандартной
библиотеки C, а man 1 printf — консольную программу с таким же именем.
Посмотреть список всех доступных на машине справочных статей можно с помощью
команды man -k. (точка — тоже часть команды).
less
Когда в небольшом окне терминала надо просмотреть очень длинный текст
(содержимое какого-то файла, длинный man и т.п.), используют специальные
программы пейджеры (от слова page/страница, то есть постраничные листатели).
Например, less.
Пролистайте вперед или назад при помощи клавиш вверх, вниз/ PageUp, PageDown/
(↑), (↓).
При необходимости нажмите клавишу q для выхода.
Для поиска определенного текста в справочной статье нажмите / (слеш), введите
текст для поиска и нажмите Enter. Перемещение к следующим вхождениям — клавиша
n.
498
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Права
С любым файлом или каталогом связан набор прав: право на чтение файла, право на
запись в файл, право исполнять файл. Все пользователи делятся на три категории:
владелец файла, группа владельца файла, все прочие пользователи.
Посмотреть права на файл можно с помощью команды ls -l.
Если при работе получите сообщение permission denied, это значит, что
недостаточно прав на объект, с которым необходимо работать.
Дополнительные источники информации:
Справочная страница: chmod.
STDIN, STDOUT, конвейеры (pipe)
Программы можно соединять между собой: выход (STDOUT) одной программы
передавать в качестве входных данных (STDIN) другой программе.
Такая конструкция из соединенных программ называется по-английски pipe (труба),
по-русски — конвейер. С каждой исполняющейся программой связаны 3 стандартных
потока данных:
•
•
•
поток входных данных STDIN;
поток выходных данных STDOUT;
поток для вывода ошибок STDERR.
Для примера:
1.
2.
3.
4.
Впишите команду wc. Отобразятся пустые строки для ввода текста.
Введите текст “good day today”, нажмите Enter.
Введите текст “good day”, нажмите Enter.
Нажмите клавиши Ctrl+d (см. рисунок ниже).
Программа wc покажет статистику по количеству букв, слов и строк в тексте и
завершится.
Рисунок. Статистика по количеству букв
В данном случае в STDIN программы отображен двухстрочный текст, а в STDOUT
получили три числа. Впишите команду head -n3 /etc/passwd, появится результат (см.
рисунок ниже):
499
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Рисунок. Результат команды head -n3 /etc/passwd
В этом случае программа head ничего не читала из STDIN, а в STDOUT написала три
строки.
Объединение программ в конвейер делается символом | вертикальная черта.
Выполните команду head -n3 /etc/passwd |wc, получится следующее (см. рисунок ниже):
Рисунок. Результат команды head -n3 /etc/passwd |wc
Программа head выдала в STDOUT три строки текста, которые сразу же попали на
вход программе wc, и та подсчитала количество символов, слов и строк в полученном
тексте. В конвейер можно объединять сколько угодно программ. Например, можно
добавить к предыдущему конвейеру еще одну программу wc, которая подсчитает,
сколько слов и букв было в выводе первой wc:
head -n3 /etc/passwd |wc |wc
1 3 24
Перенаправление ввода-вывода
1.
Вывод (STDOUT) программы можно не только передать другой программе по
конвейеру, но и просто записать в файл. Перенаправьте его с помощью > (знака
“больше”):
date > /tmp/today.txt
В результате выполнения этой команды на диске появится файл /tmp/today.txt.
Посмотрите его содержимое с помощью cat /tmp/today.txt. Если файл с таким именем
уже существовал, его старое содержимое будет удалено. Если файл не существовал,
он будет создан. Каталог, в котором создается файл, должен существовать до
выполнения команды.
2.
Если надо не перезаписать файл, а добавить вывод в его конец, используйте >>
(два знака «больше»):
500
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
date >> /tmp/today.txt
3.
Проверьте, что записано в файле.
4.
Кроме того, программе можно вместо STDIN передать любой файл. Введите:
wc </etc/passwd
Команда истории
•
Чтобы вызвать предыдущую команду, нажмите клавишу со стрелкой вверх,
после приглашения к вводу появится предыдущая команда.
Это называется историей команд. Большинство дистрибутивов Linux по умолчанию
запоминают последние 500 команд.
•
Нажмите клавишу со стрелкой вниз, и предыдущая команда исчезнет.
Управление курсором
1.
Вызовите предыдущую команду, еще раз нажав клавишу со стрелкой вверх.
2.
Нажмите клавиши со стрелками влево и вправо. Позиция курсора в командной
строке изменится. Благодаря этому легко можно редактировать команды.
Домашняя директория пользователя
В экосистеме Linux домашний каталог также называется домашним директорией.
Это основная точка входа пользователя при входе в среду Linux. Он отвечает за
хранение файлов, папок, данных и программного обеспечения в каталоге /home с
соответствующим индивидуальным профилем пользователя.
Синтаксис домашнего каталога
/home [ User Name ]
Где:
•
•
/home: можно использовать /home в качестве пути по умолчанию для домашнего
каталога. Это основной или начальный путь для входа в индивидуальный
профиль пользователя.
[User Name]: можно передать имя пользователя по пути /home. Это поможет
ввести индивидуальный путь к профилю пользователя (с точки зрения файловой
системы).
501
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Как работает команда Linux Home Directory?
Каталог пользователя обеспечивает базовую среду shell и bash. По умолчанию список
файлов создается в пользовательском каталоге /home.
•
•
•
файл bash_logout: отвечает за выполнение любого действия, когда
пользователь или терминал выходят из системы.
файл bash_profile: отвечает за выполнение любых действий при загрузке
профиля пользователя в среде Linux.
файл Bashrc: отвечает за все необходимые материалы в нем. Это поможет в
работе с bash, shell или другими приложениями. Мы можем указать функции,
псевдоним, параметры оболочки или bash и т.д.
Путь к домашнему каталогу по умолчанию будет представлен в пути /home.
Пользователь может изменить домашний каталог с помощью команды usermod (в
соответствии с уровнем пользователя).
Примеры реализации домашнего каталога Linux
Ниже приведены примеры:
Домашний каталог
Любой пользователь на уровне Linux имеет домашний каталог автоматически
созданный по пути / home с тем же именем пользователя.
Команда:
ls /home/
Результат:
Рисунок 1. Домашний каталог Linux
ls -al /home/user1/
502
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Рисунок 2. Домашний каталог Linux
Пояснение: Согласно приведенной выше команде, здесь перечислено количество
домашних каталогов пользователя. Перед добавлением любого пользователя
убедитесь, что в среде отсутствует домашний каталог (см. рисунок 1), когда мы
добавляем пользователя в среду Linux. Домашний каталог будет создан по пути
/home. Имя домашнего каталога аналогично только имени пользователя (см. рисунок
1). Пользователь может использовать один и тот же каталог для хранения
количества файлов, папок, данных и т.д. У него есть необходимые разрешения в
файловой системе для хранения или извлечения данных из домашнего каталога.
Когда любой пользователь или домашний каталог будет создан по пути /home. Это
создаст 3 файла по умолчанию в одном рабочем каталоге, т.е. bash_logout,
bash_profile и bashrc.
useradd user1
ls /home/
Домашний каталог с помощью команды cd
В среде Linux существует функциональность, доступная непосредственно в
домашнем каталоге. Для этого нам просто нужно запустить простую команду cd в
командной строке командной строки.
Использование:
cd
Результат:
503
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Рисунок 1. Домашний каталог Linux
cd
pwd
Рисунок 2. Домашний каталог Linux
Пояснение: Согласно приведенной выше команде, используется команда cd. Это
простая команда, но ее можно использовать в среде Linux. Когда пользователь
работает в любом текущем каталоге, и ему нужно перейти из текущего рабочего
каталога в домашний каталог, он использует команду “cd”. Согласно приведенному
выше рисунку 1, пользователь входит в систему с именем пользователя user1, а
текущий рабочий каталог - /home/user1/data. Нужно переместить или вернуться в
домашний каталог, была использована команда cd в окне командной строки (см.
рисунок 2).
Whoami
Pwd
ls
Домашний каталог с опцией тильды
Можно использовать команду cd для входа в домашний каталог из любого места.
Аналогично, можно добиться той же функциональности с помощью опции тильда (~).
Команда:
504
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
cd ~
Выходной сигнал:
Рисунок 1. Домашний каталог Linux
cd ~
Рисунок 2. Домашний каталог Linux
Пояснение: Концепция команды cd находится в домашнем каталоге. Аналогично,
можно увидеть концепцию со знаком тильды или опцией. Согласно приведенному выше
рисунку 1, текущий рабочий каталог - /home/user1/data. Независимо от того, в каком
месте находится пользователь, если нужно перейти из текущего рабочего каталога
в домашний каталог. Можно использовать знак тильды с помощью команды cd.
Согласно приведенной ниже команде, перемещайтесь из текущего рабочего каталога
в домашний каталог (см. рисунок 2).
ls
cd ~
Домашний каталог с переменной HOME
Существует функциональность для использования переменных среды. С помощью
переменной HOME можно напрямую перейти в домашний каталог.
Примечание: Это поможет напрямую заходить в домашнюю директорию в различных
заданиях оболочки или других приложениях.
505
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Команда:
cd #HOME
Результат:
Снимок экрана 1. Выход
cd #HOME
pwd
Снимок экрана 2. Производительность
Пояснение: В Linux существует множество глобальных переменных. Переменная
#HOME является одной из глобальных переменных. Согласно приведенной выше
команде, можно перейти из любого рабочего каталога в домашний каталог. Согласно
приведенному выше рисунку 1, пользователь находится в каталоге /home/user1/data. В
соответствии с текущим рабочим каталогом, перейдите из каталога
/home/user1/data в домашний каталог (см. рисунок 2).
pwd
ls
Перемена домашней директории на другую директорию
Чтобы сменить рабочую директорию или перейти в другую существует команда cd
(change directory — сменить директорию). Для этого после команды cd необходимо
указать путь желаемой рабочей директории. Он может быть указан двумя
способами: абсолютный путь или относительный путь.
506
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Он начинается с указания корневой директории, за которой следуют ветки дерева
файловой системы до тех пор, пока не достигнута желаемая директория. В качестве
примера рассмотрена директория в, в которой установлено большинство программ.
Ее абсолютный путь — /usr/bin. Это значит, что в корневой директории
(обозначается начальным слэш-символом (/)) нужно перейти сначала в директорию с
именем usr, а затем в директорию bin, которая в ней расположена.
1.
В окне терминала введите команду cd /usr/bin для входа в директорию /usr/bin,
которая стала рабочей директорией.
[test@localhost ~]$ cd /usr/bin
[test@localhost bin]$
Специальные ярлыки
Если ввести команду cd без указания пути, то будет выполнен переход в домашнюю
директорию.
[test@localhost bin]$ cd
[test@localhost ~]$ pwd
/home/test
Чтобы сменить рабочую директорию на предыдущую, используйте символ -cd.
Введите команду cd - для того, чтобы снова вернуться в /usr/bin.
[test@localhost ~]$ cd /usr/bin
[test@localhost bin]$ pwd
/usr/bin
Чтобы сослаться на домашнюю директорию любого пользователя, добавьте перед
именем учетной записи символ ~ (тильда), например ~test.
[test@localhost bin]$ cd ~test
[test@localhost ~]$ pwd
/home/test
Если после символа ~ (тильда) не указать имя пользователя, то данный символ будет
ссылаться на собственную домашнюю директорию.
[test@localhost bin]$ cd ~test
507
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
[test@localhost ~]$ pwd
/home/test
Пользовательский systemd
Как системный администратор, необходимо взаимодействовать с системным и
сервисным менеджером для операционных систем Linux. Программный пакет
предоставляет инструменты и службы для контроля и отчетности о состоянии
системы, для инициализации системы во время запуска и многое другое. Программный
пакет предоставляет ряд функций, таких как:
•
•
•
параллельный запуск системных служб во время загрузки;
активация демонов по требованию;
логика управления сервисом на основе зависимостей.
В качестве представления системных ресурсов и сервисов systemd вводится понятие
systemd units. Модуль systemd, который выполняет или управляет определенной
задачей, является основным объектом для systemd. Смотрите следующие примеры
различных типов модулей systemd:
•
•
•
•
•
•
обслуживание;
цель;
устройство;
монтирование;
таймер;
другие типы, которые имеют отношение к системе инициализации.
Примечание: Если необходимо отобразить все доступные типы модулей, используйте:
-t # systemctl -t help
Модуль systemd состоит из имени, типа и файла конфигурации, который определяет
задачу модуля. Файлы конфигурации устройства расположены в одном из каталогов,
перечисленных в следующей таблице:
Таблица. Расположение файлов юнитов systemd
Каталог
Описание
/usr/lib/systemd/syst
em/
Юнит-файлы systemd, распространяемые вместе с установленными пакетами
RPM
/run/systemd/system/ Юнит-файлы systemd, созданные во время выполнения. Этот каталог имеет
приоритет над каталогом с установленными файлами юнитов
508
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Каталог
Описание
/etc/systemd/system/ Юнит-файлы systemd, созданные systemctl enable, а также юнит-файлы,
добавленные для расширения службы. Этот каталог имеет приоритет над
каталогом с файлами модулей среды выполнения (то есть - инструментом,
помогающим пользователям управлять средой оболочки Linux)
Конфигурация systemd по умолчанию определяется во время компиляции.
Конфигурацию можно найти в/etc/systemd/system.conf** файле. Используйте этот
файл, если необходимо отклониться и переопределить выбранные значения для
юнитов systemd
Например, чтобы переопределить значение ограничения времени ожидания по
умолчанию, которое установлено равным 90 секундам, используйте
DefaultTimeoutStartSec параметр для ввода требуемого значения в секундах.
DefaultTimeoutStartSec=required value
Команды пользователя
При необходимости просмотрите информацию при помощи команд из следующей
таблицы:
Таблица. Доступные команды пользователя SberLinux
команда
функциональность
groupadd group_name
Добавить новую группу
adduser user_name
Добавить нового пользователя
usermod -aG group_name
Добавьте пользователя в группу
usermod
Изменить информацию о пользователе
yum list installed
Посмотреть список всех установленных пакетов с yum
dnf list installed
Посмотреть список всех установленных пакетов с dnf
dnf group list
Посмотреть список всех установленных групп пакетов с dnf
yum search keyword
Найти пакет по связанному ключевому слову
yum info package_name
Посмотреть информацию и краткую сводку о пакете
yum install package_name.rpm
Установить пакет с помощью менеджера пакетов YUM
rpm -i package_name.rpm
Установить пакет .rpm из локального файла
rpm -e package_name.rpm
Удалить пакет .rpm
ps
Посмотреть снимок активных процессов
509
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
команда
функциональность
pstree
Посмотреть процессы в древовидной диаграмме
pmap
Посмотреть карту использования памяти процессами
pmap
Посмотреть все запущенные процессы
ls -l
Посмотреть содержимое каталога
uname -r
Посмотреть информацию о системе
uname -a
Посмотреть информацию о релизе ядра
uptime
Посмотреть, как долго работает система, включая среднюю
нагрузку
hostname
Посмотреть имя хоста системы
hostname -i
Посмотреть IP-адрес системы
last reboot
Посмотреть историю перезагрузки системы
date
Посмотреть текущее время и дату
timedatectl
Запросить и изменить системные часы
cal
Посмотреть текущий календарь (месяц и день)
cd
Посмотреть путь к директории
cd home
Посмотреть домашний каталог
man
Посмотреть справочные страницы, в которых можно найти
информацию о команде (системном вызове, подпрограмме,
формате файлов и т.д.), которые указали
whoami
Посмотреть текущего пользователя
finger username
Посмотреть информацию о конкретном пользователе
fdisk -l
Посмотреть разделы диска, размеры и типы
du -ah
Посмотреть использование диска для всех файлов и каталогов
du -sh
Посмотреть использование диска в каталоге, в котором
находитесь
findmnt
Посмотреть целевую точку монтирования для всей файловой
системы
Использование средств разработки
Для разработки или создания приложений с открытым исходным кодом,
рекомендуется установить следующие инструменты разработки:
•
autoconf
510
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
automake
•
gcc
•
gcc-c++
•
bison
•
flex
•
binutils
•
gdb
•
glibc-devel
•
libtool
•
make
•
pkgconf
•
pkgconf-m4
•
pkgconf–pkg-config
•
redhat-rpm-config
•
rpm-build
•
rpm-sign
•
strace
1.
Перечислите группы пакетов.
2.
Введите следующую команду dnf, чтобы получить список групп пакетов.
$ dnf group list
Updating Subscription Management repositories.
Updating Subscription Management repositories.
Last metadata expiration check: 0:02:38 ago on Sun 17 Mar 2019 09:28:36 AM EAT.
Available Environment Groups:
Minimal Install
Workstation
Custom Operating System
Installed Environment Groups:
Server
Installed Groups:
511
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Container Management
Development Tools
Available Groups:
.NET Core Development
RPM Development Tools
Smart Card Support
Scientific Support
Security Tools
System Tools
Headless Management
Network Servers
Legacy UNIX Compatibility
Graphical Administration Tools
Можно передать параметр summary для просмотра количества установленных групп,
доступных групп и т.д.
$ sudo dnf groups summary
Updating Subscription Management repositories.
Updating Subscription Management repositories.
Last metadata expiration check: 0:06:33 ago on Sun 17 Mar 2019 09:28:36 AM EAT.
Installed Groups: 2
Available Groups: 10
3.
Установите GCC и средства разработки на машине.
Следующая команда используется для установки GCC и средств разработки на
машине.
sudo dnf group install "Development Tools"
Или:
sudo dnf groupinstall "Development Tools"
Можно просмотреть информацию о группе пакетов Development Tools.
sudo dnf group info "Development Tools"
4.
Проверьте установку, проверив места расположения инструментов.
512
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
$ whereis bison gcc flex
bison: /usr/bin/bison /usr/share/bison /usr/share/man/man1/bison.1.gz
/usr/share/info/bison.info.gz
gcc: /usr/bin/gcc /usr/lib/gcc /usr/libexec/gcc /usr/share/man/man1/gcc.1.gz
/usr/share/info/gcc.info.gz
flex: /usr/bin/flex /usr/share/man/man1/flex.1.gz /usr/share/info/flex.info-1.gz
/usr/share/info/flex.info-2.gz /usr/share/info/flex.info.gz
5.
Проверьте установленную версию GCC.
$ gcc --version
gcc (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Удаление GCC и средств разработки на сервере
Ниже приведена команда, используемая для удаления группы пакетов.
sudo dnf group remove "Development Tools"
Примечание: Будьте внимательны к дереву зависимостей, чтобы не нарушить
зависимости других системных пакетов.
События системного журнала
События системного журнала описаны в разделе «Начало работы с ведением журнала
ядра».
Устранение неполадок в системных журналах описаны в разделе «Устранение
неполадок с помощью лог-файлов».
В SberLinux существует единый демон, отвечающий за журналирование событий
локальной системы и удаленных систем. Все события собираются из сокета /dev/log,
порта UDP – 514, а так же от демона klogd, который присылает сообщения от ядра.
Все собранные сообщения фильтруются демоном rsyslog через правила в файле
/etc/rsyslog.conf и в соответствии с правилами распределяются по
соответствующим местам назначения. Файлы логов периодически обрезаются.
Периодичность определяет файл logrotate.conf и команда logrotate, которая
запускается системным планировщиком – cron.
Syslog (управление логированием)
513
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Функция системного журналирования ( логирование) – это основной источник
информации о работе системы и ошибках. Журналирование может осуществляться
на локальной системе, а так же сообщения журналирования могут пересылаться на
удаленную систему, кроме того, в конфигурационном файле /etc/rsyslog.conf возможна
тонкая регулировка уровня журналирования. Журналирование осуществляется при
помощи демона rsyslog –, который обычно получает входную информацию при помощи
сокета /dev/log (локально) или с udp-порта 514 (с удаленных машин).
syslog-server:~# ls -l /dev/log
srw-rw-rw- 1 root root 0 Дек 17 06:25 /dev/log
В случае локального журналирования главным файлом – хранителем информации,
обычно является /var/log/messages, но в большинстве инсталляций используются и
многие другие файлы, которые могут быть тщательно настроены с помощью
вышеуказанного конфигурационного файла. Например, может возникнуть
необходимость выделить в отдельный лог сообщения, создаваемые демоном
электронной почты.
Служба Rsyslog в SberLinux
В SberLinux служба Rsyslog устанавливается и запускается автоматически на
сервере. Чтобы убедиться, что демон работает в системе, выполните следующую
команду:
## systemctl status rsyslog.service
1.
Если служба не запущена по умолчанию, выполните следующую команду, чтобы
запустить демон rsyslog.
## systemctl start rsyslog.service
2.
Если утилита Rsyslog не установлена по умолчанию в системе, которую
планируете использовать в качестве централизованного сервера журналов,
выполните команду dnf, чтобы установить пакет rsyslog и запустить демон.
## dnf install rsyslog
## systemctl start rsyslog.service
3.
После установки утилиты Rsyslog можно настроить rsyslog в качестве
централизованного сервера журналов, открыв основной файл конфигурации
/etc/rsyslog.conf, чтобы получать сообщения журнала для внешних клиентов.
514
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
## vi /etc/rsyslog.conf
В файле конфигурации /etc/rsyslog.conf найдите и раскомментируйте следующие
строки, чтобы разрешить прием транспорта UDP на сервер Rsyslog через порт 514.
Rsyslog использует стандартный протокол UDP для передачи журналов.
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
4.
Протокол UDP не имеет накладных расходов TCP и делает передачу данных
быстрее, чем протокол TCP. С другой стороны, протокол UDP не гарантирует
надежности передаваемых данных.
Однако, если необходимо использовать протокол TCP для приема журнала, нужно
найти и раскомментировать строки в файле конфигурации /etc/rsyslog.conf, чтобы
настроить демон Rsyslog для привязки и прослушивания сокета TCP на порту 514.
module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")
5.
Создайте новый шаблон для получения удаленных сообщений, так как этот
шаблон будет направлять локальный сервер Rsyslog, где сохранять полученные
сообщения, отправленные сетевыми клиентами Syslog.
$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
Директива $template RemoteLogs направляет демон Rsyslog для сбора и записи всех
переданных сообщений журнала в отдельные файлы на основе имени клиента и
удаленного клиентского приложения, создавшего сообщения на основе описанных
свойств, добавленных в конфигурацию шаблона: HOSTNAME и PROGRAMNAME.
Все полученные файлы журнала будут записаны в локальную файловую систему в
выделенный файл, названный в честь имени хоста клиентской машины, и храниться в
каталоге /var/log/.
Правило перенаправления & ~ предписывает локальному серверу Rsyslog прекратить
дальнейшую обработку полученного сообщения журнала и удалить сообщения (не
записывать их во внутренние файлы журнала).
RemoteLogs - это произвольное имя, присвоенное этой директиве шаблона. Можно
использовать любое имя, которое лучше всего подходит для созданного шаблона.
515
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Чтобы настроить более сложные шаблоны Rsyslog, прочтите руководство по файлу
конфигурации Rsyslog, выполнив команду man rsyslog.conf.
## man rsyslog.conf
6.
После внесения указанных выше изменений конфигурации вы можете
перезапустить демон Rsyslog, чтобы применить последние изменения, выполнив
следующую команду.
## service rsyslog restart
7.
После перезапуска сервера Rsyslog он должен действовать как
централизованный сервер журнала и записывать сообщения от клиентов
Syslog. Чтобы проверить сетевые сокеты Rsyslog, запустите утилиту grep для
фильтрации строки rsyslog.
## netstat -tulpn | grep rsyslog
Настройка параметров логирования
Основным файлом конфигурации для rsyslog является /etc/rsyslog.conf. Здесь можно
указать глобальные директивы, модули и правила, которые состоят из частей
фильтра и действия. Также можно добавлять комментарии в виде текста,
следующего за хеш-знаком (#).
Фильтры
Правило задается частью фильтра, который выбирает подмножество сообщений
системного журнала, и частью действия, которое определяет, что делать с
выбранными сообщениями. Чтобы определить правило в конфигурационном файле
/etc/rsyslog.conf, определите фильтр и действие в одной строке, а затем разделите
их одним или несколькими пробелами или табуляциями.
rsyslog предлагает различные способы фильтрации сообщений системного журнала в
соответствии с выбранными свойствами. Доступные методы фильтрации можно
разделить на фильтры, основанные на объекте/приоритете, свойствах и
выражениях.
Фильтры на основе объекта/приоритета
Наиболее часто используемым и хорошо известным способом фильтрации сообщений
системного журнала является использование фильтров на основе
объекта/приоритета, которые фильтруют сообщения системного журнала на основе
двух условий: объекта и приоритета, разделенных точкой. Чтобы создать селектор,
используйте следующий синтаксис:
516
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
FACILITY.PRIORITY
Где:
FACILITY определяет подсистему, которая выдает конкретное сообщение системного
журнала. Например, почтовая подсистема обрабатывает все сообщения системного
журнала, связанные с почтой. FACILITY может быть представлено одним из
следующих ключевых слов (или числовым кодом): kern (0), user (1), mail (2), daemon (3),
auth (4), syslog (5), lpr (6), news (7), cron (8), authpriv (9), ftp (10), and local0 через local7
(16 - 23). PRIORITY определяет приоритет сообщения системного журнала. PRIORITY
может быть представлен одним из следующих ключевых слов (или числом): debug (7),
info (6), notice (5), warning (4), err (3), crit (2), alert (1) и emerg (0).
Вышеупомянутый синтаксис выбирает сообщения системного журнала с
определенным или более высоким приоритетом. Ставя перед любым ключевым словом
приоритета знак равенства (=), указываете, что будут выбраны только сообщения
системного журнала с указанным приоритетом. Все остальные приоритеты будут
проигнорированы. И наоборот, перед ключевым словом priority с восклицательным
знаком (!) выбираются все сообщения системного журнала, кроме сообщений с
определенным приоритетом.
В дополнение можно использовать звездочку (*) для определения всех объектов или
приоритетов (в зависимости от того, где ставите звездочку, до или после запятой).
Указание ключевого слова приоритета none служит для объектов без заданных
приоритетов. Как условия объекта, так и условия приоритета не зависят от
регистра.
Чтобы определить несколько объектов и приоритетов, разделите их запятой (,).
Чтобы определить несколько селекторов в одной строке, разделите их точкой с
запятой (;). Обратите внимание, что каждый селектор в поле селектор способен
перезаписывать предыдущие, что может исключить некоторые приоритеты из
шаблона.
Фильтры на основе свойств
Фильтры, основанные на свойствах, позволяют фильтровать сообщения системного
журнала по любому свойству, например, по времени создания или по тегу системного
журнала. Как имена свойств, так и операции сравнения чувствительны к регистру.
Фильтр на основе свойств должен начинаться с двоеточия (:). Чтобы определить
фильтр, используйте следующий синтаксис:
:PROPERTY, [!]COMPARE_OPERATION, "STRING"
Где:
517
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
PROPERTY указывает желаемое свойство. Необязательный восклицательный знак (!)
сводит на нет результат операции сравнения. Другие логические операторы в
настоящее время не поддерживаются в фильтрах на основе свойств.
COMPARE_OPERATION определяет одну из операций сравнения. STRING указывает
значение, с которым сравнивается текст, предоставляемый свойством. Это
значение должно быть заключено в кавычки. Чтобы избежать определенного символа
внутри строки (например, кавычки (“)), используйте символ обратной косой черты ().
Фильтры на основе выражений
Фильтры на основе выражений выбирают сообщения системного журнала в
соответствии с определенными арифметическими, логическими или строковыми
операциями. Фильтры на основе выражений используют собственный язык сценариев
rsyslog под названием RainerScript для создания сложных фильтров.
Базовый синтаксис фильтра на основе выражений выглядит следующим образом:
if EXPRESSION then ACTION else ACTION
Где:
EXPRESSION представляет выражение, подлежащее вычислению, например: $msg
startswith ‘DEVNAME’или $syslogfacility-text == ’local0’. Можно указать более одного
выражения в одном фильтре с помощью and or операторов.
Обратите внимание, что rsyslog поддерживает сравнения без учета регистра в
фильтрах на основе выражений. Можно использовать contains_i или startswith_i
сравнивать операции внутри атрибута EXPRESSION, например:
if $hostname startswith_i "<HOST_NAME>" then ACTION
ACTION представляет действие, которое должно быть выполнено, если выражение
возвращает значение true. Это может быть одно действие или произвольный
сложный скрипт, заключенный в фигурные скобки. Фильтры на основе выражений
обозначаются ключевым словом if в начале новой строки. Ключевое слово then
отделяет EXPRESSION от ACTION. При необходимости вы можете использовать
ключевое слово else, чтобы указать, какое действие должно быть выполнено в случае,
если условие не будет выполнено.
С фильтрами на основе выражений можно вложить условия, используя скрипт,
заключенный в фигурные скобки. Сценарий позволяет использовать фильтры на
основе объекта/приоритета внутри выражения. С другой стороны, фильтры на
основе свойств здесь не рекомендуются. RainerScript поддерживает регулярные
выражения со специализированными функциями re_match() и re_extract().
518
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Шаблоны
Любой вывод, сгенерированный rsyslog, может быть изменен и отформатирован в
соответствии с вашими потребностями с помощью шаблонов. Чтобы создать
шаблон, используйте следующий синтаксис в /etc/rsyslog.conf:
template(name=”TEMPLATE_NAME” type=”string” string="text %PROPERTY% more text"
[option.OPTION="on"])
Где:
template() является директивой, вводящей блок, определяющий шаблон.
TEMPLATE_NAME обязательный аргумент используется для ссылки на шаблон.
Обратите внимание, что это TEMPLATE_NAME должно быть уникальным. type
обязательный аргумент может принимать одно из следующих значений: “list”,
“subtree”, “string” or “plugin”. string аргументом является фактический текст шаблона.
Внутри этого текста могут использоваться специальные символы, такие как \n для
перевода строки или \r для возврата каретки. Другие символы, такие как % или “,
должны быть экранированы, если вы хотите использовать эти символы буквально.
Внутри этого текста могут использоваться специальные символы, такие как \n для
новой строки или \r для возврата каретки. Другие символы, такие как %или”, должны
быть экранированы, если вы хотите использовать эти символы буквально. Текст,
указанный между двумя знаками процента (%), указывает свойство, которое
позволяет получить доступ к определенному содержимому сообщения системного
журнала. OPTION атрибут определяет любые параметры, которые изменяют
функциональность шаблона. В настоящее время поддерживаются следующие
параметры шаблона sql: и stdsql, которые используются для форматирования
текста в виде SQL-запроса, или json, который форматирует текст так, чтобы он
подходил для обработки в формате JSON, и casesensitive который устанавливает
чувствительность к регистру имен свойств.
Аудит системы с помощью auditd
На основе предварительно настроенных правил и свойств демон аудита (auditd)
генерирует записи журнала для записи информации о событиях, происходящих в
системе.
Управление службой аудита
После auditd настройки запустите службу для сбора информации аудита:
$ sudo service auditd start
519
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Единственная причина использовать service команду вместо systemctl - это
правильно записать значение идентификатора пользователя (UID).
Включите auditd демон, чтобы он мог запускаться во время загрузки:
$ sudo systemctl enable auditd
Поиск журналов аудита
Используйте этот ausearch инструмент для поиска в журналах аудита. По
умолчанию он выполняет поиск в /var/log/audit/audit.log файле.
Например, для поиска записей журнала на основе key_name:
$ sudo ausearch -i -k user-modify
Создание аудиторских отчетов
Используйте этот aureport инструмент для запроса и создания отчетов аудита на
основе журналов аудита.
Например, чтобы сгенерировать отчет обо всех исполняемых событиях, выполните:
$ sudo aureport -x
События мониторинга
Обзор вариантов мониторинга производительности
Ниже приведены некоторые средства мониторинга производительности и
настройки, доступные в SberLinux:
•
•
Performance Co-Pilot (pcp) используется для мониторинга, визуализации,
хранения и анализа измерений производительности на системном уровне. Это
позволяет осуществлять мониторинг и управление данными в режиме
реального времени, а также регистрировать и извлекать исторические данные.
SberLinux предоставляет несколько инструментов, которые можно
использовать из командной строки для мониторинга системы. Ниже приведены
встроенные инструменты командной строки:
– top предоставляется пакетом procps-ng. Этот инструмент предлагает
динамическое представление о процессах в работающей системе. Он
отображает разнообразную информацию, включая сводку системы и
список задач, которые в настоящее время управляются ядром Linux.
520
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
–
•
•
•
•
•
•
•
•
•
•
ps предоставляется пакетом procps-ng. Он делает снимок выбранной
группы активных процессов. По умолчанию проверяемая группа ограничена
процессами, принадлежащими текущему пользователю и связанными с
терминалом, на котором выполняется команда ps.
– Virtual memory statistics (vmstat) предоставляется пакетом procps-ng. Он
предоставляет мгновенные отчеты о процессах системы, памяти,
подкачке, вводе/выводе блоков, прерываниях и активности процессора.
– System activity reporter (sar) предоставляется пакетом sysstat. Он
собирает и сообщает информацию о системной активности, которая
произошла до сих пор в текущий день.
perf использует счетчики производительности оборудования и точки
трассировки ядра для отслеживания влияния других команд и приложений на
систему.
bcc-tools используется для сбора компилятора BPF (BCC). Компилятор
предоставляет более 100 сценариев eBPF, которые отслеживают действия
ядра. Для получения дополнительной информации о каждом из этих
инструментов смотрите страницу руководства (с помощью команды man),
описывающую, как использовать компиллятор и какие функции он выполняет.
turbostat предоставляется пакетом kernel-tools. В нем представлены данные о
топологии процессора, частоте, статистике состояния питания в режиме
ожидания, температуре и энергопотреблении процессоров Intel 64.
iostat предоставляется пакетом sysstat. Он отслеживает загрузку системных
устройств ввода-вывода и сообщает о ней, чтобы помочь администраторам
принимать решения о том, как сбалансировать нагрузку ввода-вывода между
физическими дисками.
irqbalance распределяет аппаратные прерывания между процессорами для
повышения производительности системы.
ss печатает статистическую информацию о сокетах, позволяя
администраторам оценивать производительность устройства с течением
времени. SberLinux рекомендует использовать ss поверх netstat.
numastat предоставляется пакетом numactl. По умолчанию numastat
отображает системную статистику попадания и промаха NUMA для каждого
узла из распределителя памяти ядра. Оптимальная производительность
определяется высокими значениями numa_hit и низкими значениями numa_miss.
numad - автоматический демон управления привязкой NUMA. Он отслеживает
топологию NUMA и использование ресурсов в системе, что динамически
улучшает распределение ресурсов NUMA, управление ими и производительность
системы.
SystemTap отслеживает и анализирует действия операционной системы,
особенно действия ядра.
valgrind анализирует приложения, запуская их на синтетическом процессоре и
инструментируя существующий код приложения по мере его выполнения. Затем
он печатает комментарий, который четко идентифицирует каждый процесс,
521
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
•
участвующий в выполнении приложения, в указанный пользователем файл,
дескриптор файла или сетевой сокет. Это также полезно для поиска утечек
памяти.
pqos предоставляется пакетом intel-cmt-cat. Он отслеживает и управляет
кешем процессора и пропускной способностью памяти на последних
процессорах Intel.
Дополнительные ресурсы:
Cправочные страницы: (man)pcp, top, ps, vmstat, sar, perf, iostat, irqbalance, ss,
numastat, numad, valgrind и pqos.
Часто встречающиеся проблемы и пути их устранения
В разделе описываются общие подходы, которые помогают исправить некоторые из
наиболее распространенных проблем при загрузке SberLinux.
Понимание процедуры загрузки
Чтобы исправить проблемы с загрузкой, важно хорошо понимать процедуру загрузки.
Если проблемы возникают во время загрузки, необходимо понимать, на какой стадии
процедуры загрузки возникает проблема, чтобы можно было выбрать
соответствующий инструмент для устранения проблемы.
Каким образом процедура загрузки происходит в SberLinux
1.
Выполнение POST: компьютер (также - машина, сервер) включен. Из системного
ПО, которым может быть UEFI или классический BIOS, выполняется
самотестирование при включении питания (POST) и аппаратное обеспечение,
необходимое для запуска инициализации системы.
2.
Выбор загрузочного устройства: В загрузочной прошивке UEFI или в основной
загрузочной записи находится загрузочное устройство.
3.
Загрузчик: На SberLinux загрузчиком является GRUB 2.
4.
Загрузка ядра: Загрузчик может представить пользователю меню загрузки или
может быть настроен на автоматический запуск Linux по умолчанию. Для
загрузки Linux ядро загружается вместе с initramfs. Initramfs содержит модули
ядра для всего оборудования, которое требуется для загрузки, а также
начальные сценарии, необходимые для перехода к следующему этапу загрузки.
На SberLinux initramfs содержит полную операционную систему (которая может
использоваться для устранения неполадок).
5.
Запуск /sbin/init: Как только ядро загружено в память, загружается первый из
всех процессов, но все еще из initramfs. Это процесс /sbin/init, который связан с
522
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
systemd. Демон udev также загружается для дальнейшей инициализации
оборудования. Все это все еще происходит из образа initramfs.
6.
Обработка initrd.target: процесс systemd выполняет все модули из initrd.target,
который подготавливает минимальную операционную среду, и корневая
файловая система на диске монтируется в каталог /sysroot. Следующие шаги
суммируют, как процедура загрузки происходит в Linux.
7.
Переключение на корневую файловую систему: система переключается на
корневую файловую систему, которая находится на диске, и в этот момент
может также загрузить процесс systemd с диска.
8.
Запуск цели по умолчанию (default target): Systemd ищет цель по умолчанию для
выполнения и запускает все собственные модули. В этом процессе
отображается экран входа в систему, и пользователь может проходить
аутентификацию. Обратите внимание, что приглашение к входу в систему
может быть запрошено до успешной загрузки всех файлов модуля systemd. Таким
образом, просмотр приглашения на вход в систему не обязательно означает,
что сервер еще полностью функционирует. На каждом из перечисленных этапов
могут возникнуть проблемы из-за неправильной настройки или других ошибок.
Таблица ниже суммирует, где настроена определенная фаза и что можно
сделать, чтобы устранить неполадки, если что-то пойдет не так.
Фаза загрузки
Где настроено
Как исправить
POST
Аппаратное обеспечение (F2, Esc, F10,
или другая кнопка)
Замена аппаратного обеспечения
Выбор загрузочного BIOS/UEFI конфигурация или загрузочное Замена аппаратного обеспечения или
устройства
устройство
использование восстановления
системы
Загрузка GRUB 2
grub2-install и редактирует в
/etc/defaults/grub
Приглашение GRUB для загрузки и
изменения в /etc/defaults/grub, после
чего выполняется grub2-mkconfig
Загрузка ядра
Конфигурация GRUB и /etc/dracut.conf
Приглашение GRUB для загрузки и
изменения в /etc/defaults/grub, после
чего выполняется grub2-mkconfig
Запуск /sbin/init
Компиляция в initramfs
init = kernel аргумент загрузки,rd.break
аргумент загрузки ядра
Обработка
initrd.target
Компиляция в initramfs
Обычно ничего не требуется
Переключение на
/etc/fstab
корневую файловую
систему
/etc/fstab
523
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Фаза загрузки
Где настроено
Как исправить
Запуск цели по
умолчанию
/etc/systemd/system/default.target
Запуск rescue.target как аргумент при
загрузке ядра
Устранение неполадок
Проверка журналов
Если системные журналы сохраняются при перезагрузках, можно использовать
инструмент journalctl для проверки этих журналов.
По умолчанию системные журналы хранятся в каталоге /run/log/journal, что
означает, что журналы удаляются при перезагрузке системы. Чтобы хранить
журналы в каталоге /var/log/journal, который сохраняется при перезагрузках,
установите для параметра Storage значение persistent в файле
/etc/systemd/journaldd.conf.
[root@host ~]# vim /etc/systemd/journald.conf
..
[Journal]
Storage=persistent
...
[root@host ~]# systemctl restart systemd-journald.service
Чтобы проверить журналы предыдущей загрузки, используйте опцию -b journalctl. Без
каких-либо аргументов параметр -b отображает сообщения только с момента
последней загрузки. С отрицательным числом в качестве аргумента он отображает
журналы предыдущих загрузок.
[root@host ~]# journalctl -b -1 -p err
Эта команда показывает все сообщения, оцененные как ошибки, после предыдущей
загрузки.
Устранение проблемы с загрузкой systemd
Для устранения неполадок при запуске службы во время загрузки SberLinux
предоставляет следующие доступные инструменты.
Включение оболочки ранней отладки
Включив службу debug-shell с помощью systemctl enable debug-shell.service, система
создает корневую оболочку на TTY9 (Ctrl + Alt + F9) в начале последовательности
загрузки. Эта оболочка автоматически входит в систему с правами root, чтобы
524
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
администраторы могли отлаживать систему, пока операционная система еще
загружается.
Примечание: Не забудьте отключить службу debug-shell.service по завершении
отладки, поскольку она оставляет корневую оболочку, не прошедшую проверку
подлинности, открытой для всех, у кого есть доступ к локальной консоли.
Использование аварийных и спасательных целей
Добавляя systemd.unit=rescue.target или systemd.unit=emergency.target в командную
строку ядра из загрузчика, система переходит в аварийную или аварийную оболочку
вместо обычного запуска. Для обеих этих оболочек требуется пароль root.
Аварийная цель сохраняет корневую файловую систему подключенной только для
чтения, в то время как аварийная цель ожидает завершения sysinit.target, чтобы
инициализировать больше систем, таких как служба ведения журнала или файловые
системы. Пользователь root на этом этапе не может вносить изменения в /etc/fstab,
пока диск не будет повторно смонтирован в состояние чтения записи mount -o
remount,rw /
Можно использовать эти оболочки для устранения любых проблем, которые мешают
нормальной загрузке системы; например, цикл зависимостей между службами или
неправильная запись в /etc/fstab. Выход из этих оболочек продолжается в обычном
процессе загрузки.
Выявление застрявших заданий
Во время запуска systemd запускает несколько заданий. Если некоторые из этих
заданий не могут быть выполнены, они блокируют выполнение других заданий. Чтобы
просмотреть текущий список заданий, администраторы могут использовать
команду systemctl list-jobs. Все задания, перечисленные как выполняемые, должны быть
завершены, прежде чем задания, перечисленные как ожидающие, смогут быть
продолжены.
Передача аргументов в GRUB 2 ядру во время загрузки
Если сервер не загружается нормально, приглашение загрузки GRUB предлагает
удобный способ остановить процедуру загрузки и передать конкретные параметры
ядру во время загрузки.
Когда сервер загружается, пользователь видит меню GRUB 2. В загрузочном меню
введите e, чтобы войти в режим, в котором можно редактировать команды, или c,
чтобы ввести полную командную строку GRUB.
После передачи e в загрузочное меню GRUB появится интерфейс. В этом интерфейсе
прокрутите вниз, чтобы найти раздел, начинающийся с linux16 /vmlinuz, за которым
следует множество аргументов. Это строка, которая сообщает GRUB, как
запустить ядро.
525
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
После ввода параметров загрузки, которые необходимо использовать, нажмите Ctrl +
X, чтобы запустить ядро с этими параметрами. Обратите внимание, что эти
параметры используются только один раз и не являются постоянными. Чтобы
сделать их постоянными, измените содержимое файла конфигурации /etc/default/grub
и используйте grub2-mkconfig -o /boot/grub2/grub.cfg, чтобы применить изменение.
Когда возникли проблемы, существует несколько вариантов, которые можно ввести
в приглашении загрузки GRUB:
•
•
•
•
rd.break останавливает процедуру загрузки, пока она еще находится в стадии
initramfs. Эта опция полезна, если отсутствует пароль root.
init=/bin/sh или init=/bin/bash указывает, что оболочка должна быть запущена
сразу после загрузки ядра и initrd. Это полезный вариант, но не лучший, потому
что в некоторых случаях потеряете консольный доступ или пропустите другие
функции.
systemd.unit=emergency.target входит в минимальный режим, когда загружается
минимальное количество системных модулей. Требуется пароль пользователя
root. Чтобы увидеть, что загружено только очень ограниченное количество
модулей, можно ввести команду systemctl list-units.
systemd.unit=rescue.target запускает еще несколько системных модулей, чтобы
привести в более полный рабочий режим. Требуется пароль пользователя root.
Чтобы увидеть, что загружено только очень ограниченное количество модулей,
можно ввести команду systemctl list-units.
Запуск целей(targets) устранения неполадок в Linux
1.
Перезагрузите SberLinux. Когда отобразиться меню GRUB, нажмите e.
2.
Найдите строку, которая начинается на linux16 /vmlinuz. В конце строки
введите systemd.unit=rescue.target и удалите rhgb quit.
3.
Нажмите сочетание клавиш Ctrl+X, чтобы начать загрузку с этими
параметрами. Введите пароль root.
4.
Введите systemctl list-units. Откроются все модули, которые загружены в
данный момент и загружена базовая системная среда.
5.
Введите systemctl show-environment. Откроются переменные окружения в
режиме rescue.target.
6.
Перезагрузите систему (reboot).
7.
Когда отобразится меню GRUB, нажмите e. Найдите строку, которая
начинается на linux16 /vmlinuz. В конце строки введите
systemd.unit=emergency.target и удалите rhgb quit.
8.
Снова введите пароль root. Система загрузилась в режиме emergency.target.
526
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
9.
Введите systemctl list-units. Загрузится минимум из модулей.
Переустановка GRUB 2
Код загрузчика не исчезает просто так, но иногда может случиться, что загрузочный
код GRUB 2 поврежден. Переустановите GRUB 2. Введите grub2-install и имя
устройства, на которое необходимо его установить.
Если сервер не загружается, нужно запустить систему восстановления и
восстановить доступ к серверу из системы восстановления. После монтирования
файловых систем сервера в /mnt/sysimage и использования chroot /mnt/sysimage,
создайте смонтированный образ системы корневым образом: запустите grub2install, чтобы установить GRUB 2 на желаемое установочное устройство.
Исправление Initramfs
initramfs может быть поврежден. Если есть подозрения, что проблема с initramfs,
создайте ее заново. Чтобы воссоздать его, используя все настройки по умолчанию,
запустите команду dracut –force. (Без –force команда откажется перезаписать
существующие initramfs.). При запуске команды dracut можно использовать файл
конфигурации /etc/dracut.conf, чтобы указать, что именно записывается в initramfs. В
этом файле конфигурации можно увидеть такие параметры, как lvmconf = no,
которые можно использовать для включения или выключения определенных функций.
Используйте эти параметры, чтобы убедиться, что существуют все необходимые
функции в initramfs.
Восстановление после проблем с файловой системой
Если неправильно настроено монтирование файловой системы, процедура загрузки
может закончиться сообщением Give root password for maintenance. Это сообщение
генерируется командой fsck, которая пытается проверить целостность файла
системы в /etc/fstab при загрузке. Если fsck терпит неудачу, требуется
вмешательство вручную.
Если упомянуто устройство, которого нет, или в UUID для монтирования
устройства, есть ошибка, например, systemd ожидает, вернется ли устройство само
по себе и выдается сообщение Give root password for maintenance.
Введите пароль root.
Введите journalctl -xb, как предлагается, чтобы увидеть, записываются ли в журнал
соответствующие сообщения, содержащие информацию о том, что не так. Если
проблема ориентирована на файловую систему, введите mount -o remount, rw /,
чтобы убедиться, что корневая файловая система смонтирована только для чтения,
проанализировать, что не так в файле /etc/fstab, и исправить это.
527
Руководство по системному администрированию продукта Platform V SberLinux OS Server (SLO)
Если появится подобный текст (как на рисунке ниже), то значит, есть проблема с
/etc/fstab:
Рисунок. Проблема с /etc/fstab
528
Скачать