Рассмотрим установку системы CentOS 8 и последующую настройку исходя из практики использования этой операционной системы. Данная система для меня является основной для использования на серверах. Стабильность работы гарантированна. Поддержка до 2029 года.
Содержание:
- 1 Введение
- 2 Установка CentOS 8
- 3 Настройка CentOS 8
- 3.1 Пакетный менеджер DNF
- 3.2 Информация об установленной системе
- 3.3 Отключение SELinux
- 3.4 Добавление репозиториев
- 3.5 Обновление CentOS 8
- 3.6 Популярные и полезные утилиты
- 3.7 Отправка почты с авторизацией на другом SMTP сервере
- 3.8 Настройка времени
- 3.9 Сетевые параметры
- 3.10 Смена пароля root
- 3.11 Брандмауэр FirewallD
- 3.12 Смена порта SSH
- 3.13 Авторизация SSH по ключу
- 3.14 Установка Midnight Commander
- 3.15 Установка редактора Vim
- 3.16 Отображение приглашения в консоли bash
- 3.17 Настройка хранения истории bash
- 3.18 Установка Tmux
- 4 Cockpit: Веб-интерфейс управления сервером CentOS 8
- 5 Вывод
Введение
В данной статье собраны все основные моменты базовой настройки сервера CentOS 8 которые использую на практике.
Установка CentOS 8
Создания USB носителя для установки
Существует множество программ для записи iso образа на устройство. Например, у меня два варианта для создания носителя для установки:
- Rufus — использую эту программа для создание загрузочных USB-дисков в системе Windows;
-
ROSA ImageWriter — использую эту программу для любой системы Linux.
Варианты установки
Рассмотрим два самых популярных варианта установки СentOS 8.
Образы iso CentOS 8
Образы можно скачать c зеркала Yandex по ссылке Download CentOS. Существует два варианта:
- CentOS-8-x86_64-1905-dvd1.iso — полный образ 7G;
- CentOS-8-x86_64-1905-boot.iso — загрузочный образ 550M.
Какой вариант использовать решать вам. Например, мне нравится устанавливать загрузочный образ и дальше настраивать руками, так и опыт приходит и понимаешь как что работает.
Больше нет минимального образа, но радует что есть загрузочный при установке с которого надо только руками внести требуемый репозиторий и выбрать нужные параметры установки.
Смотрим список всех возможных репозиториев и выбираем необходимый который будем использовать при установке с загрузочного образа.
Указывать надо путь к той папке, где лежит каталог repodata. Например, mirror.yandex.ru/centos/8/BaseOS/x86_64/os/.
В выборе программ выбираем базовое окружение «Минимальная установка» а в дополнительных параметрах «Гостевые агенты» и «Стандарт».
Шаблоны
Шаблоны используются как правило для установки на VDS и предоставляются компаниями предоставляющие такие услуги. Удобно, но тем не менее я пару раз попадал в дурацкие ситуации.
Вот моменты почему я советую использовать установку на VDS систем с iso образа:
- Разбивка диска порой не учитывает конфигурацию тарифа или требований вашей системы — например, на одном хостинге при 2 G оперативной памяти был создал SWAP раздел в 512 М в результате пришлось переустанавливать систему дабы не терять место на и так небольшом диске;
- Локализация как правило Английская — мне приятней работать на своем родном языке хотя и на английском если надо всё настрою;
- Присутствие в шаблоне каких-то изменений отличающихся от стандартных минимальных параметров установки — порой не понимаешь откуда взялись какие то настройки которых раньше не видел. Кроме того, можно потратить кучу времени не понимая почему не работает то что всегда работало как часы. В итоге выясняется что в шаблоне установки нет пакета который всегда ставился в стандартном минимальном образе.
Все компании предоставляющие услуги VDS могут предоставить возможность установки системы с ISO образа системы. При установке надо правильно указать сетевые параметры исходя из предоставленных сетевых параметров настроек выбранного тарифа!
Разбивка диска для установки
Вариантов разбивки диска для CentOS 8 может быть множество исходя из пожеланий и предпочтений. Например, мне нравиться придерживаться таких параметров:
- Размер диска под систему Linux 50 G — этого мне хватает с запасом;
- Создаю раздел boot размером 1 G — так я гарантирую что при заполнении диска система загрузится однозначно;
- Создаю SWAP — согласно требованиям системы.
Можно выносить логи и кэш в отдельные разделы, но это лишняя трата времени. Лучше всегда выполнять мониторинг размера диска и в случае проблем оперативно принять необходимые меры. Прежде всего, так и головная боль пропадает о том какой размер указывать разделам ( вариант с перераспределением очень сюрпризная тема) и больше времени потратится на правильную настройку сервера.
SWAP
Тема организации SWAP на сервере очень важная и поэтому я описал все основные моменты использования в статье SWAP для Linux
Настройка CentOS 8
Пакетный менеджер DNF
Используется новый менеджер пакетов который поддерживает модульный формат пакетов.
По прежнему можно вносить команды yum вместо dnf и всё будет работать. Для yum сделан алиас для запуска dnf.
Для вывода всей информации о том какие команды можно использовать достаточно внести в консоли команду dnf и увидеть полный список возможностей.
dnf = вывод части команды = usage: dnf [options] COMMAND Список основных команд: alias List or create command aliases autoremove удалить все ненужные пакеты, первоначально установленные по зависимостям check поиск проблем в packagedb check-update проверить доступные обновления для пакетов clean удалить кэшированные данные deplist Показывать список зависимостей пакета и какие пакеты их предоставляют distro-sync обновить установленные пакеты до последних имеющихся версий downgrade Откат к предыдущей версии пакета group показать или использовать информацию о группах help отобразить подсказку по использованию history отобразить (или использовать) историю транзакций info отобразить информацию о пакете или группе пакетов install установка пакета(ов) в систему list вывести список пакетов или групп пакетов makecache создание кэша метаданных mark отметить или снять отметку пользовательской установки с установленных пакетов. module Взаимодействие с репозиторием Modules. provides найти пакет по заданному значению reinstall переустановка пакета remove удалить пакет или пакеты из системы repolist отобразить настроенные репозитории ПО repoquery поиск пакетов по ключевому слову repository-packages выполнить команды над всеми пакетами заданного репозитория search поиск информации о пакете по заданной строке shell запустить интерактивную оболочку DNF swap запустить интерактивный вариант dnf для удаления и установки одной спецификации updateinfo показать рекомендации к пакетам upgrade обновить пакет или пакеты в системе upgrade-minimal обновление, но только «новейших» пакетов, которые исправляют проблему в вашей системе
Информация об установленной системе
Узнать какая система установлена на сервере можно следующей командой:
uname -a
= вывод команды =
Linux localhost.localdomain 4.18.0-80.11.2.el8_0.x86_64 #1 SMP Tue Sep 24 11:32:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Этой информации достаточно для понимания с какой системой предстоит работать.
Отключение SELinux
Отключаем SELinux. Его использование и настройка в системе CentOS отдельный разговор.
vi /etc/sysconfig/selinux = меняем значение = SELINUX=disabled
Перезагрузим для применения изменений. После перезагрузки проверяем статус:
sestatus = вывод команды = SELinux status: disabled
Надо иметь четкое понимание что SELinux система требующая хорошего понимания в том как она работает и как настраивать. Надо или отключить сразу или потратить время на изучение как она работает.
Добавление репозиториев
Для инсталляции различного софта необходимо подключить репозитории в CentOS 8. Со временем пришло понимание того что относится к добавляемым репозиториям надо очень внимательно, чтобы в последствии не возникало проблем при обслуживании.
Всегда подключаю самый популярный репозиторий Epel (Extra Packages for Enterprise Linux). Epel хранилище пакетов, созданное группой специалистов операционной системы Fedora. Пакеты из Epel репозитория никогда не конфликтуют и не переустанавливают базовые пакеты RHEL.
dnf -y install epel-release
Старюсь подключать репозитории которые поддерживают сами разработчики программ. Например, такие как Nginx, Zabbix, MariaDB.
Обновление CentOS 8
Обновление системы очень важный момент и следует относится к нему очень внимательно. Всегда проще найти проблему когда проходит немного обновлений.
Прежде всего, всегда перед обновлениями делайте резервные копии!
Перед выполнением настройки лучше выполнить полное обновление системы:
dnf update
Автоматическое обновление системы
Для безопасности сервера его необходимо своевременно обновлять. Вариантов обновления CentOS 8 несколько и это тема отдельного длинного разговора.
Например, получать сообщения на почту об появившихся обновлениях и уже на основании этого принимать решение о необходимости обновления — для меня лучший вариант.
При моих пожеланиях мне подойдёт утилита dnf-automatic. Ставится она из базового репозитория командой:
dnf install dnf-automatic
Управлением запуском по расписанию занимается systemd со своим встроенным планировщиком. Посмотреть таймеры автоматического запуска можно командой:
systemctl list-timers *dnf-*
= вывод команды =
NEXT LEFT LAST PASSED UNIT ACTIVATES
Thu 2019-10-24 14:36:56 MSK 5min left n/a n/a dnf-makecache.timer dnf-makecache.service
Посмотрим настройки этого таймера выполнив команду:
cat /etc/systemd/system/multi-user.target.wants/dnf-makecache.timer
= вывод команды =
[Unit]
Description=dnf makecache --timer
ConditionKernelCommandLine=!rd.live.image
# See comment in dnf-makecache.service
ConditionPathExists=!/run/ostree-booted
Wants=network-online.target
[Timer]
OnBootSec=10min
OnUnitInactiveSec=1h
Unit=dnf-makecache.service
[Install]
WantedBy=multi-user.target
Если заданий нет, то можно добавить таймер выполнив команду:
systemctl enable --now dnf-automatic.timer
Настройка этого таймера будет по пути — /etc/systemd/system/multi-user.target.wants/dnf-automatic.timer.
Настройка системы автоматического обновления находится по пути /etc/dnf/automatic.conf. По-умолчанию он только скачивает обновления, и отправляет сообщение на почту root.
Самый важный параметр это update_type — которой будет говорить системе какие выполнять обновления. Доступно несколько вариантов:
- default — полное обновление;
- security — только обновление безопасности.
Мой вариант настройки выглядит следующим образом:
vim /etc/dnf/automatic.conf = часть вывода с пояснениями [commands] # What kind of upgrade to perform: # default = all available upgrades # security = only the security upgrades upgrade_type = security random_sleep = 0 # To just receive updates use dnf-automatic-notifyonly.timer # Whether updates should be downloaded when they are available, by # dnf-automatic.timer. notifyonly.timer, download.timer and # install.timer override this setting. download_updates = yes # Whether updates should be applied when they are available, by # dnf-automatic.timer. notifyonly.timer, download.timer and # install.timer override this setting. apply_updates = no
Согласно этих параметров будут скачаны все обновления безопасности и будет отправлено сообщение пользователю root.
В настройках можно настроить отправку почты на другой почтовый ящик, но мне больше нравится вариант когда все сообщения пользователя root пересылаются на мой почтовый ящик.
Популярные и полезные утилиты
Установим в начале основные популярные утилиты которые обычно требуются в работе.
dnf -y install net-tools bind-utils htop atop iftop lsof wget bzip2 traceroute gdisk yum-utils
- net-tools bind-utils — сетевые утилиты после установки которых будут работать команды # ifconfig и # nslookup,
- htop atop — два интересных диспетчера задач,
- iftop — показывает в режиме реального времени загрузку сетевого интерфейса,
- lsof — вывода информации о том, какие файлы используются теми или иными процессами,
- wget — неинтерактивная консольная программа для загрузки файлов по сети,
- bzip2 — утилита командной строки с открытым исходным кодом для сжатия данных,
- traceroute — утилита предназначенная для определения маршрутов следования данных в сетях TCP/IP,
- gdisk — умеет работать с GPT-дисками разработано по подобию fdisk,
- yum-utils — — это набор утилит для управления репозиторием, установки и отладки пакетов, поиска пакетов и много другого.
Отправка почты с авторизацией на другом SMTP сервере
Настраиваем на базе Postfix.
Проверка статуса:
systemctl status postfix
Если Postfix не установлен то производим установку выполнив команду:
dnf install postfix
Запускаем и добавляем в автозагрузку командами:
systemctl start postfix systemctl enable postfix
Чтобы отправлять письма с консоли необходимо установить пакет mailx:
dnf install mailx
После этого можно отправлять с консоли сервера сообщения на свою почту:
uname -a | mail -s "info server" info@sevo44.ru
В результате на почту придёт сообщение:
Мы не уверены в подлинности отправителя этого письма. Возможно, данные были подменены.Отправитель: vds-micro2.sevo44.ruПодпись: НетШифрование: Нет
Из за выше сказанного сообщение может попасть в спам, либо вообще не будет принято сервером получателя, потому что на сервере нет корректных настроек для отправки почты. Чтобы почта корректно отправлялась, надо воспользоваться внешним почтовым сервером.
Например, мне удобно в данном случае везде использовать почту noreply@sevo44.ru которая обслуживается Yandex.
Переименуем дефолтный конфигурационный файл Postfix. После этого, создадим рабочий и добавим необходимые настройки:
mv /etc/postfix/main.cf /etc/postfix/main.cf_orig vim /etc/postfix/main.cf = необходимый код = # DEFAULT CONFIG compatibility_level = 2 queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix mail_owner = postfix # Имя сервера, которое выводит команда hostname myhostname = vds-micro2.sevo44.ru # По логике нужно оставлять только домен, но в данном случае лучше оставить полное имя сервера, чтобы в поле отправитель # фигурировало полное имя сервера, так удобнее разбирать служебные сообщения mydomain = vds-micro2.sevo44.ru myorigin = $mydomain mydestination = $myhostname, localhost.$mydomain, localhost inet_interfaces = localhost inet_protocols = all unknown_local_recipient_reject_code = 550 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix/samples readme_directory = /usr/share/doc/postfix/README_FILES smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem smtpd_tls_key_file = /etc/pki/tls/private/postfix.key smtpd_tls_security_level = may smtp_tls_CApath = /etc/pki/tls/certs smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt meta_directory = /etc/postfix shlib_directory = /usr/lib64/postfix # SMTP YANDEX CONFIG relayhost = smtp.yandex.ru:587 smtp_use_tls = yes smtp_sasl_auth_enable = yes # База параметров авторизации с SMPT smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd # Беза подмены имени почтового ящика smtp_generic_maps = hash:/etc/postfix/generic smtp_sasl_security_options = noanonymous smtp_tls_security_level = may
Создаем файл с информацией об имени пользователя и пароле для авторизации на сервере SMTP:
vim /etc/postfix/sasl_passwd = необходимый код = smtp.yandex.ru:587 noreply@sevo44.ru:PASSWORD
Создаем db файл:
postmap /etc/postfix/sasl_passwd
Для того чтобы почта уходила надо чтобы адрес отправителя а адрес авторизации на сервер smtp совпадал!
В случае если у нас имеется сайт отправляющий почту средствами PHP можно настроить корректную отправку почты. Например, добавим параметр для сайта crystalium44.ru.
Переименуем дефолтную базу подмены имени почтового ящика. После этого, создадим рабочий и добавим необходимые настройки:
mv /etc/postfix/generic /etc/postfix/generic_orig vim /etc/postfix/generic = необходимый код = root@vds-micro2.sevo44.ru noreply@sevo44.ru crystalium44.ru@php7-lxc-vds-micro2.sevo44.ru noreply@sevo44.ru
Создаем db файл:
postmap /etc/postfix/generic
При получении ошибки «warning: SASL authentication failure: No worthy mechs found» Необходимо установить еще несколько пакетов для работы SASL!
Установим необходимые пакеты:
dnf -y install cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain
Перезапустим Postfix и проверим работу.
systemctl restart postfix
Отправляем тестовое письмо через консоль.
uname -a | mail -s "info server" info@sevo44.ru
Отправитель письма подтверждён и проверен Спамообороной Яндекса.Отправитель: sevo44.ruПодпись: sevo44.ruШифрование: Да
Так выглядит письмо отправленное с сайта crystalium44.ru c помощью PHP:
Как видим теперь всё работает как надо!
В случае ошибок проверяем почтовый лог выполнив команду:
tail -n 10 /var/log/maillog
В заключение, осталось добавить к стандартному алиасу для root в /etc/aliases, внешний адрес, куда будет дублироваться почта, адресованная root. Для этого редактируем указанный файл, изменяя последнюю строку:
vim /etc/aliases = необходимо привести к виду = # Person who should get root's mail root: root,info@sevo44.ru
Обновляем базу сертификатов:
newaliases
Настройка времени
Определим текущее время на сервере:
date = вывод команды = Ср ноя 14 12:17:34 CET 2018
Как видим временная зона не настроена.
Выполним необходимую настройку временной зоны Europe — Moscow:
= Сделать резервную копию текущей timezone = mv /etc/localtime /etc/localtime.bak = В папке /usr/share/zoneinfo/ ищем что надо и делаем ссылку = ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
В итоге получим:
date = вывод команды = Сб окт 13 02:59:46 MSK 2018
Можно использовать одну команду зная точно что эта временная зона присутствует в настройках:
timedatectl set-timezone Europe/Moscow
Синхронизация времени
В CentOS 8 по-умолчанию используется утилита для синхронизации времени chrony. Если у вас её нет, то устанавливайте:
dnf install chrony
Запускаем chrony и добавляем в автозагрузку:
systemctl start chronyd systemctl enable chronyd
Проверяем правильность работы:
systemctl status chronyd
= вывод команды =
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
Active: active (running) since Ср 2018-10-03 21:55:18 MSK; 27min ago
Docs: man:chronyd(8)
man:chrony.conf(5)
Main PID: 631 (chronyd)
CGroup: /system.slice/chronyd.service
└─631 /usr/sbin/chronyd
окт 03 21:55:17 lemp.sevo44.loc systemd[1]: Starting NTP client/server...
окт 03 21:55:17 lemp.sevo44.loc chronyd[631]: chronyd version 3.2 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SECHASH +SIGND +ASYNCDNS +IPV6 +DEBUG)
окт 03 21:55:17 lemp.sevo44.loc chronyd[631]: Frequency 1.141 +/- 1.440 ppm read from /var/lib/chrony/drift
окт 03 21:55:18 lemp.sevo44.loc systemd[1]: Started NTP client/server.
окт 03 21:55:35 lemp.sevo44.loc chronyd[631]: Selected source 89.109.251.23
окт 03 21:55:35 lemp.sevo44.loc chronyd[631]: System clock wrong by 1.035954 seconds, adjustment started
окт 03 21:55:36 lemp.sevo44.loc chronyd[631]: System clock was stepped by 1.035954 seconds
Сетевые параметры
При установке CentOS 8 уделяю особое внимание настройки сетевых параметров. Кроме того, на странице настройки сетевых параметров указывается название хоста.
Всегда отключаю ipv6 так как в большинстве случаев он не используется а вот проблемы при работе с системой может создать.
Для управления сетевыми настройками в CentOS 8 после установки можно воспользоваться графической утилитой nmtui:
nmtui = вывод команды = -bash: nmtui: команда не найдена = команда установки необходимого пакета для работы nmtui = yum install NetworkManager-tui
В CentOS 8, сеть управляется только через Network Manager. Сетевые настройки лучше выполнять с помощью утилиты nmtui.
Руками вся настройка сводится к редактированию файлов в паке /etc/sysconfig/network-scripts/. Для определения интерфейсов необходимо предварительно выполнить команду ip addr которая покажет название всех имеющихся интерфейсов.
Например, мой файл настройки сетевого интерфейса ens18:
vim /etc/sysconfig/network-scripts/ifcfg-ens18 = вывод команды = TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="none" DEFROUTE="yes" IPV4_FAILURE_FATAL="yes" IPV6INIT="no" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens18" UUID="2f1479ad-8a41-4886-acf4-64f0c5eff5c2" DEVICE="ens18" ONBOOT="yes" IPADDR="135.21.15.51" PREFIX="24" GATEWAY="18.22.52.1" DNS1="165.2.92.3" ZONE=public
Для применения изменений необходимо перезагрузить Network Manager выполнив команду:
= или командой = systemctl restart NetworkManager = предварительно поняв название необходимого сервиса = systemctl list-units | grep -i network
Смена пароля root
Смена пароля производится командой:
passwd = вывод команды = Изменяется пароль пользователя root. Новый пароль : Повторите ввод нового пароля : passwd: все данные аутентификации успешно обновлены.
Брандмауэр FirewallD
По умолчанию в системе CentOS 8 используется брандмауэр FirewallD.
О том как работать я описывал в статье FirewallD базовая настройка.
Ниже я выполню необходимые действия не описывая всё подробно.
Вывод информации об активных зонах:
firewall-cmd --get-active-zones = вывод команды = public interfaces: ens18
Выведем информацию о конкретной зоне:
firewall-cmd --list-all --zone=public = вывод команды = public (active) target: default icmp-block-inversion: no interfaces: ens18 sources: services: cockpit ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Для безопасности порт ssh лучше поменять на нестандартный.
Добавим разрешение подключаться по этому порту:
firewall-cmd --permanent --zone=public --add-port=25555/tcp = вывод команды = success
Кроме того, сразу удалим ненужный сервис:
firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client = вывод команды = success
Применим изменения и посмотрим результат сделанных действий:
firewall-cmd --reload = вывод команды = success firewall-cmd --list-all --zone=public = вывод команды = public (active) target: default icmp-block-inversion: no interfaces: ens18 sources: services: cockpit ssh ports: 25555/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Только после настройки ssh для работы по новому порту удаляйте сервис ssh из FirewallD! Иначе в случае ошибки настройки можете потерять доступ к серверу.
Смена порта SSH
Укажем порт в настройках ssh открыв конфигурационный файл командой:
vi /etc/ssh/sshd_config = необходимые изменения = Раскоментируем строку Port 22 и заменим на наш 25555
Перезапускаем сервис ssh командой:
systemctl restart sshd
Проверяем какой порт слушает sshd (для работы нужен установленный пакет net-tools):
netstat -tulpn | grep sshd tcp 0 0 0.0.0.0:25555 0.0.0.0:* LISTEN 453/sshd tcp6 0 0 :::25555 :::* LISTEN 453/sshd
Подключение к SSH по нестандартному порту
Подключение производится с указанием необходимого порта командой:
ssh -p 25555 root@193.124.180.195
Авторизация SSH по ключу
Вводить каждый раз пароль не удобно да и не помешает добавить безопасности.
После настройки можно отключить в параметрах ssh авторизацию по паролю, но иногда подключение по паролю просто необходимо. Обычно я создаю 16 злачный пароль и меняю его если давал временный доступ специалистам любого уровня и моего доверия. Безопасность лишней не бывает!
Более подробно о том как настроить подключение по ключу можно в статье RSA или авторизация SSH по ключу
Добавляем на сервер необходимый ключ командой:
ssh-copy-id -i /home/local/.ssh/sevo44_rsa.pub -p 25555 root@243.21.12.24
Установка Midnight Commander
Установим самый популярный файловых менеджеров с текстовым интерфейсом командой:
dnf -y install mc
Включаем подсветку синтаксиса всех файлов, которые не обозначены явно в файле /usr/share/mc/syntax/Syntax. Этот универсальный синтаксис подходит для конфигурационных файлов, с которыми чаще всего приходится работать на сервере. Именно этот шаблон будет применяться к .conf и .cf файлам, так как к ним явно не привязано никакого синтаксиса. Перезаписываем файл unknown.syntax:
cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax
= вывод команды =
cp: переписать «/usr/share/mc/syntax/unknown.syntax»? y
В случае отказа от использования встроенного редактора MC необходимо в настройках «Настройки — Конфигурация» снять галки у параметров «Встроенный редактор» и «Встроенный просмотр»
Установка редактора Vim
По умолчанию в системе работает редактор vim и это вполне оправдано.
Обоснование использования редактора VIM и как с ним работать можно в статье Vim текстовый редактор
В случае отсутствия редактора его можно установить без вопросов командой:
dnf -y install vim
Отображение приглашения в консоли bash
При появлении большого количества серверов на обслуживании я сразу столкнулся с плохой информативностью о том с каким я сервером работаю.
Стандартный вариант отображения приветствия после установки CentOS 8:
[root@vds-micro ~]#
В представленном виде при работе одновременно с разными серверами я путался и порой выполнял команды не там где надо. Изменение цвета приглашения, вывода полного имени машины и пути где мы находимся позволило мне избежать таких ошибок.
Выведем имеющиеся параметры:
echo $PS1 = вывод команды = [\u@\h \W]\$
Изменим для текущей сессии:
export PS1='\[\033[01;31m\]\u@\H\[\033[01;34m\] \w \$\[\033[00m\] '
= в результате =
root@vds-micro.sevo44.ru ~ #
Для постоянного применения настроек необходимо в папке пользователя в файл .bashrc добавить необходимый код:
vim .bashrc = необходимые дополнения = # Приветствие bash PS1='\[\033[01;31m\]\u@\H\[\033[01;34m\] \w \$\[\033[00m\] '
Для применения подобных настроек для всех пользователей с обычными правами сделаем приглашение зеленым. Добавим необходимые параметры в имеющийся файл или создадим новый и добавим туда необходимые параметры:
vim /etc/profile.d/bash_completion.sh = необходимое дополнение = # Вид bash PS1='\[\033[01;32m\]\u@\H\[\033[01;34m\] \w \$\[\033[00m\] '
В итоге я получил следующее:
root@vds-micro.sevo44.ru /etc # = права root root@vds-micro.sevo44.ru /etc # = простой пользователь
Более подробно можно почитать в статье Изменение приглашения терминала в bash.
Настройка хранения истории bash
Список последних выполненных команд хранится в домашней директории пользователя в файле .bash_history (в начале точка). Его можно открыть любым редактором и посмотреть.
По умолчанию вывод команды history в консоли нам покажет:
history = вывод команды = 1 yum update 2 reboot 3 htop 4 df -h
Как видим вывод не информативный. Кроме того, покажет только последние 1000 команд.
Быстро найти конкретную команду, можно с помощью фильтрации только нужных строк, например вот так:
history | grep yum
Изменим эту ситуацию добавив в файл .bashrc находящийся в папке пользователя необходимые параметры:
# Настройки history export HISTSIZE=10000 export HISTTIMEFORMAT="%h %d %H:%M:%S " PROMPT_COMMAND='history -a' export HISTIGNORE="ls:ll:history:w"
Расшифруем параметры:
- Первый параметр увеличивает размер файла до 10000 строк;
- Второй параметр указывает, что необходимо сохранять дату и время выполнения команды;
- Третья строка вынуждает сразу же после выполнения команды сохранять ее в историю;
- В последней строке мы создаем список исключений для тех команд, запись которых в историю не требуется.
Для применения изменений необходимо выполнить команду:
source ~/.bashrc
В итоге мы получим:
history = вывод команды = 1 янв 22 18:33:08 yum update 2 янв 22 18:33:08 reboot 3 янв 22 18:33:08 htop 4 янв 22 18:33:08 df -h
Можно применить эту настройку для всех пользователей указав параметр в файле /etc/profile.d/bash_completion.sh.
В таком варианте получаем гораздо большую информативность.
Установка Tmux
Установим пожалуй один из самых необходимых и удобных программ для удаленной работы с сервером. Tmux терминальный оконный менеджер при использовании дает возможность при обрыве связи с сервером по ssh не терять информацию о выполняемых действиях.
Установка выполняется командой:
dnf install tmux
Более подробная информация по настройке и работе с программой Tmux можно в статье Tmux терминальный оконный менеджер
Cockpit: Веб-интерфейс управления сервером CentOS 8
Возможность видеть наглядно все основные параметры системы и иметь возможность ими управлять пожалуй самая приятна новость которая меня порадовала в выпуске CentOS 8.
При авторизации по ssh вы увидите следующее сообщение:
Activate the web console with: systemctl enable --now cockpit.socket
Достаточно выполнить команду в консоли systemctl enable —now cockpit.socket и при следующей авторизации вы увидите следующее сообщение:
Web console: https://localhost:9090/ or https://192.168.0.252:9090/
Порт 9090 должен быть открыт. Работающий по умолчанию сервис cockpit в FirewallD открывает этот порт.
При вводе в браузере https://192.168.0.252:9090 увидите приглашение ввести данные авторизации.
После входа вы увидите главную страницу с выводом графиков нагрузки основных параметров сервера.
Далеко не все конечно можно видеть и настраивать в этой панели но определенное удобство есть явно. Пользоваться панелью просто, понятно и не вызывает никаких сюрпризов, так что описывать по большому счету нечего. Попробуйте и вы сами всё поймете.
Единственное что я делаю это то что не держу её включенной. Убираю из автозагрузки в самой панели управления или командой:
systemctl disable cockpit.socket
В случае необходимости мне не сложно включить при необходимости и отключить после использования следующими командами:
systemctl start cockpit.socket systemctl stop cockpit.socket
Вывод
В результате я получил статью в которой свёл в одно место все основные моменты которые я на практике использую при базовой настройке сервера CentOS 8. Возможно что-то сказано с ошибками или можно улучшить. Комментируйте и советуйте я всегда рад обратной связи с пользователями систем Linux.
Статья шикарная, спасибо! Всё нужное и по полочкам. Но Centos8 умер, к сожалению. Предлагаю переписать под Rocky или Oracle.
Спасибо. Новая статья уже есть Rocky Linux 8 установка и настройка
Если не затруднит, напишите, пожалуйста про LDAP с чем его едят? Все никак не могу вникнуть как он работает и как правильно настроить с репликацией и прочими фишками.
О этот LDAP 🙂 Фишек и вариантов настройки просто бездна. На практике почти не сталкиваюсь с ним или использую уже настроеные варианты. Для каких целей он вам нужен?
Спасибо за оперативность!)) В организации где я устроился есть несколько серверов на Линуксах так вот авторизация проходит по 389-ds. Все читал маны даже поднял но в логику и структуру не въехал (( И ещё: что лучше LDAP или Kerberos?) Правда слышал второй используется в связке с лдап’ом)))
В связке 🙂 Вообще всё очень сильно зависит от того на каких дистрибутивах используется сервер и какие версии подключаются. Проще использовать Samba в роли AD. По LDAP много устаревшей информации.
Отличная статья! Без воды и на понятном языке!!
Спасибо. Стараюсь 🙂
Спасибо, полезная статья! Столкнулся вот с проблемой. Не могу найти fuse-sshfs. В 7 версии она ставилась с репов. В 8ке её нет… И альтернативы никакой
Тут почитайте
Install fuse-sshfs rpm package: