Linux Centos краткий учебник

 

 

Данное пособие было написано Козловым Михаилом для себя т.к. работаю с довольно большим количеством совершенно разных технологий, постоянно все вылетает из головы, выкладываю в общедоступный доступ на своем сайте http://snakeproject.ru/

 

Это не подробная книга-учебник, больше краткий учебник-справочник по администрированию самой ОС.

Здесь мало теории и минимум объяснений (ну не люблю ит-художественный жанр), руководство больше основано на примерах и выводе команд.

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

 

Все примеры работы будут показаны на примере ОС Centos 7 (на дворе 2018 год, декабрь)

 

Предполагается, что вы умеете пользоваться базовыми командами cd, ls, cat и банально хоть одним редактором типа vi\vim\nano по вкусу.

 

Читали хоть немного или смотрели видео по linux и хоть чуть-чуть имеете представление об ОС

 

Процесс установки опускаем, там все довольно тривиально, единственно пару слов о разбивке жесткого диска:

 

Можно оставить разбивку по умолчанию, или сделать нечто подобное:

 

Допустим у тестовой виртуальной машины диск 20 гигабайт и 2 гигабайта памяти

 

/boot - файлы загрузчика - 300 мегабайт

/ - корень файловой системы - 15 гигабайт

swap - раздел подкачки (т.н. виртуальной памяти) - 1 гигабайт (1\2 памяти)

/home - раздел домашних директорий для файлов пользователя  - все остальное

 

Файловую систему для корня ставим предлагаемую xfs или ext4

Под boot раньше т\исторически отдавалось предпочтение ext2, но это в данном случае не имеет значения

 

Оглавление:

1.     Примеры работы с железом

2.     Процесс загрузки ОС Linux и загрузчики

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

4.     Логи в systemd

5.     Работа с жестким диском

6.     Управление ПО

7.     Сеть и брандмауэр

8.     Пользователи, группы, права, файлы, поиск, ssh

9.     Процессы

10. Планировщик заданий cron

11. Репозитории ПО

12. Логи

 

 

1.    Примеры работы с железом

 

Поработаем с виртуальной файловой системой, менеджер устройств в ОС называется Udev

udev - это система, которая автоматически отображает устройства, которые подключены к жестким дискам, USB-накопителям и т. д., и создаст запись в файловой системе dev.

 

Посмотрим на фрагмент вывода файлов устройств

Буква в начале "b" - блочное устройство (отправляет\принимает данные блоками данных)

Буква в начале "c" - символьное устройство (отправляет\принимает данные потоками данных)

 

По сути упрощенно, файлы устройств - указатели на драйверы

 

ls -lh /dev/

...

crw------- 1 root root     10, 235 Dec  6 14:44 autofs

drwxr-xr-x 2 root root         160 Dec  6 14:44 block

drwxr-xr-x 2 root root          80 Dec  6 14:44 bsg

crw------- 1 root root     10, 234 Dec  6 14:44 btrfs-control

lrwxrwxrwx 1 root root           3 Dec  6 14:44 cdrom -> sr0

drwxr-xr-x 2 root root          80 Dec  6 14:44 centos

drwxr-xr-x 2 root root        2.6K Dec  6 14:44 char

crw------- 1 root root      5,   1 Dec  6 14:44 console

lrwxrwxrwx 1 root root          11 Dec  6 14:44 core -> /proc/kcore

drwxr-xr-x 6 root root         140 Dec  6 14:44 cpu

crw------- 1 root root     10,  61 Dec  6 14:44 cpu_dma_latency

crw------- 1 root root     10,  62 Dec  6 14:44 crash

drwxr-xr-x 5 root root         100 Dec  6 14:44 disk

brw-rw---- 1 root disk    253,   0 Dec  6 14:44 dm-0

brw-rw---- 1 root disk    253,   1 Dec  6 14:44 dm

...

 

Мой диск sda, на котором есть разделы sda1 и sda2

 

ls -lh /dev/sda*

brw-rw---- 1 root disk 8, 0 Dec  6 14:44 /dev/sda

brw-rw---- 1 root disk 8, 1 Dec  6 14:44 /dev/sda1

brw-rw---- 1 root disk 8, 2 Dec  6 14:44 /dev/sda2

 

sysfs – содержит информацию об устройствах

 

В выоде мы видим блочные устройства, шины  другую информацию о устройствах

ls -l /sys/

drwxr-xr-x   2 root root 0 Dec  6 15:25 block

drwxr-xr-x  30 root root 0 Dec  6 15:25 bus

drwxr-xr-x   4 root root 0 Dec  6 15:25 dev

drwxr-xr-x  13 root root 0 Dec  6 15:25 devices

drwxr-xr-x   6 root root 0 Dec  6 15:25 firmware

drwxr-xr-x   5 root root 0 Dec  6 15:25 fs

drwxr-xr-x  10 root root 0 Dec  6 15:25 kernel

 

Пример вывода mac адреса сетевой карточки с именем enp0s3

cat /sys/class/net/enp0s3/address

08:00:27:1a:87:29

 

Procfs – содержит информацию о процессах системы

 

На пример информация о процессоре

/proc/cpuinfo

Или файловой системе и точках монтирования

/proc/mounts

 

В /proc/sys/ находятся изменяемые параметры

ls -l /proc/sys/

dr-xr-xr-x 1 root root 0 Dec  6 15:34 dev

dr-xr-xr-x 1 root root 0 Dec  6 14:44 fs

dr-xr-xr-x 1 root root 0 Dec  6 14:44 kernel

dr-xr-xr-x 1 root root 0 Dec  6 14:44 net

dr-xr-xr-x 1 root root 0 Dec  6 15:34 user

dr-xr-xr-x 1 root root 0 Dec  6 14:52 vm

 

Примеры:

 

Разрешить ip-форвардинг пакетов (сделать роутер проще говоря)

cat /proc/sys/net/ipv4/ip_forward

1

 

Изменить количество единовременно открытых файлов

cat /proc/sys/fs/file-max

681737

 

Надо учитывать, что эти параметры будут работать только до перезагрузки

 

Утилита lsmod – информация модулей ядра

lsmod

Module                  Size  Used by

vfat                   17461  0

fat                    65950  1 vfat

iosf_mbi               14990  0

 

Удалим модуль

 [root@localhost ~]# rmmod vfat

 

Он исчез из вывода

 [root@localhost ~]# lsmod | grep vfat

 

Добавим, «жесткое» добавление не пройдет

 [root@localhost ~]# insmod vfat

insmod: ERROR: could not load module vfat: No such file or directory

 

Добавим «мягко»

 [root@localhost ~]# modprobe vfat

 

Снова появился

 [root@localhost ~]# lsmod | grep vfat

vfat                   17461  0

fat                    65950  1 vfat

 

 

 

Установим утилиту для работы с usb

yum -y install usbutils

 

Подключаем флешку, и видим ее в выводе:

lsusb

Bus 001 Device 002: ID 3456:1211 Transcend Usb Device 8 GB

 

В директории /dev появилось устройство sdb

udevadm info -a /dev/sdb

 

Создам папку, куда подмонтирую флешку

mkdir /media/usb1

 

Монтирую ее (на флешке файловая система fat32)

mount -t vfat /dev/sdb1 /media/usb1

 

Размонтирование

umount /media/usb1

 

 

Утилита udevadm дает управление

 

Вывести справку

man udevadm

udevadm --help

 

Мониторинг событий сообщений ядра системы

udevadm monitor --property –kernel

 

Попробуйте вставить\выдернуть флешку или диск, вы увидите события ядра

KERNEL[4672.481546] change   /devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0/1:0:0:0/block/sr0 (block)

ACTION=change

DEVNAME=/dev/sr0

DEVPATH=/devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0/1:0:0:0/block/sr0

DEVTYPE=disk

DISK_MEDIA_CHANGE=1

MAJOR=11

MINOR=0

SEQNUM=1729

SUBSYSTEM=block

 

2.    Процесс загрузки ОС Linux и загрузчики

 

Упрощенная схема загрузки компьютера и ОС

1.     BIOS\UEFI – запускает ОС с носителя

2.     MBR\GPT – содержит загрузчик

3.     LILO\GRUB – загрузчик ядра ОС

4.     Ядро Linux – конфигурирует все процессы и запускает init

5.     Init – пользовательская среда

 

Пару примеров решения задач с загрузчиком GRUB

 

 

1 - Апгрейд ядра

 

Узнать текущую версию ядра:

uname -rs

Linux 3.10.0-862.el7.x86_64

 

Установим репозиторий (http://elrepo.org/tiki/tiki-index.php):

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

 

Посмотреть доступную версию ядра и заголовков:

yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

 

Установить версию из репозитория:

yum --enablerepo=elrepo-kernel install kernel-ml

yum install --enablerepo=elrepo-kernel kernel-ml-{firmware,headers,devel}

 

Смотрим, версия должна быть прописана в

/boot/grub2/grub.cfg

 

Смотрим, какое ядро загружется по умолчанию:

cat /etc/default/grub

 

Видим:

GRUB_DEFAULT=saved

 

Это значит, что будет загружена последняя сохраненная версия

 

Меняем на:

GRUB_DEFAULT=0

 

Это значит, что будет по умолчанию использоваться первое ядро, находящееся в списке Grub

 

И применяем команду обновления конфигурации:

grub2-mkconfig -o /boot/grub2/grub.cfg

 

Перезагружаемся

reboot

 

Проверяем версию ядра

uname -r

4.19.7-1.el7.elrepo.x86_64

 

Список пакетов ядра

rpm -qa | grep '^kernel-[0-9]'

kernel-3.10.0-862.el7.x86_64

kernel-3.10.0-862.11.6.el7.x86_64

kernel-3.10.0-862.14.4.el7.x86_64

 

Удаляем ненужные пакеты

yum remove kernel-3.10.0-862.11.6.el7.x86_64 kernel-3.10.0-862.14.4.el7.x86_64

 

И проверяем, чтоб лишние версии исчезли из списка в:

/boot/grub2/grub.cfg

 

2 - Установка таймера загрузчика

 

Изменяем таймер в секундах:

vi /etc/default/grub

GRUB_TIMEOUT=2

 

grub2-mkconfig -o /boot/grub2/grub.cfg

 

Перезагружаемся

reboot

 

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

 

У systemd объектом действий является юнит

 

.service - службы

.device - точки монтирования

.mount - устройства

.socket - сокеты

 

/usr/lib/systemd - содержит юниты по умолчанию

/etc/systemd - содержит управляемые юниты (редактируемые)

 

 

Вывести их список юнитов:

systemctl list-units

 

В т.ч. выключенных:

systemctl list-units --all

 

Вывести список файлов юнитов:

systemctl list-unit-files

 

Вывести содержимое файла юнита:

systemctl cat network.service

 

Вывести список зависимостей юнита:

systemctl list-dependencies network

 

Пример старта, остановки, перезагрузки, перечитывания файлов службы:

systemctl start network.service

systemctl restart network.service

systemctl stop network

systemctl reload network

 

Включение и выключение службы в автозагрузку:

systemctl enable network.service

systemctl disable network.service

 

По сути создает и удаляет симлинк отсюда:

/etc/systemd/system/multi-user.target.wants/

 

Состояние службы:

systemctl status network.service

 

Проверка включения:

systemctl is-enabled network

Linux Centos имеет 7 уровней запуска (3й по умолчанию)

0 - poweroff.target Выключение и выключение питания

1 -  rescue.target Однопользовательский режим

2,3,4 - multi-user.target Настройка неграфической многопользовательской оболочки

5 - graphical.target Настройка графической многопользовательской оболочки

6 - reboot.target Выключение и перезагрузка системы

 

Команда показывает, что мы находимся на 3ем уровни загрузки

runlevel

N 3

 

multi-user.target говорит о том, что мы находимся на 3ем уровни загрузки

systemctl list-units --type=target

UNIT                  LOAD   ACTIVE SUB    DESCRIPTION

local-fs.target       loaded active active Local File Systems

multi-user.target     loaded active active Multi-User System

network-online.target loaded active active Network is Online

network.target        loaded active active Network

 

Перейти на другой уровень (например уровень 1 - rescue.target)

telinit 1

systemctl isolate rescue.target

 

Изменить уровень запуска по умолчанию

systemctl set-default -f multi-user.target

 

4.    Логи в systemd

 

 

Время логгируемых событий указывается универсальное (UTC) или местное

 

Вывести список доступных часовых поясов:

timedatectl list-timezones

 

Установка часового пояса из списка выше:

timedatectl set-timezone Europe/Moscow

 

Проверка:

timedatectl status

 

 

Вывод логов

journalctl

 

Вывод логов с момента последней загрузки

journalctl -b

 

Вывести список пережних загрузок

journalctl --list-boots

 

Вывод логов загрузки с id 0

journalctl -b 0

 

Вывод логов с определенного времени

journalctl --since "2018-08-10 09:10:00"

 

Вывод логов определенного сервиса

journalctl -u crond.service

 

Вывод логов определенного сервиса с определенного времени

journalctl -u crond.service --since "2018-08-10 09:10:00"

 

Вывод логов определенного бинаря

journalctl /usr/sbin/crond

 

Вывод логов только ошибок с момента последней загрузки

journalctl -p err -b

После -p указываем

0 - emerg

1 - alert

2 - crit

3 - err

4 - warning

5 - notice

6 - info

7 - debug

 

Вывод логов определенного pid

journalctl _PID=9791

 

Вывод логов определенной учетки

id -u root

journalctl _UID=0

journalctl -F _UID

 

Вывод списка пользователей, у которых имеются записи в логах

journalctl -f

 

Мануал по фильтрам

man systemd.journal-fields

 

 

Ротация логов

 

Осуществляется с помощью опций:

 

−−vacuum-size

Устанавливает предельный размер для хранимых на диске логов

По превышению старые файлы будут автоматические удалены

Пример

journalctl --vacuum-size=1G

 

−−vacuum-time

Устанавливает срок хранения

По истечении они файлы будут автоматически удалены

Пример

journalctl --vacuum-time=1years

 

5.    Работа с жестким диском

 

Основные директории:

/ - корневая файловая система

/boot – загрузочный раздел

/root – домашняя директория суперпользователя

/home – домашние директории пользователей

/etc – конфигурационные файлы

/var – часто изменяющиеся файлы

/usr – ПО и библиотеки

/tmp – временные файлы

Swap – подкачка, виртуальная память, не монтируется

 

Перед дальнейшими действиями подключил к машине еще один диск на 2 гигабайта, определился как sdb

ls -l /dev/sdb

brw-rw---- 1 root disk 8, 16 Dec  7 09:59 /dev/sdb

 

Вывести информацию о дисках (в выводе оба наших диска)

fdisk -l

Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors

Disk /dev/sda: 8589 MB, 8589934592 bytes, 16777216 sectors

 

Выбрать диск для работы (утилита fdisk)

fdisk /dev/sdb

 

Вывести справку по командам

m

 

Для начала на пустом диске надо создать таблицу разметки

gGPT таблица

o DOS таблица

 

Создать новый раздел (extended или primary (возможно создание до 4х))

W – записать изменения на диск

Command (m for help): n

Partition type:

   p   primary (0 primary, 0 extended, 4 free)

   e   extended

Select (default p): p

Partition number (1-4, default 1):

First sector (2048-4194303, default 2048):

Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303):

Using default value 4194303

Partition 1 of type Linux and of size 2 GiB is set

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

Syncing disks.

 

Выйти

q

 

Варианты форматирования созданной партиции (mkfs)

mkfs.ext4 /dev/sdb1

mkfs.ext3 /dev/sdb1

mkfs.ext2 /dev/sdb1

mkfs.fat /dev/sdb1

mkfs.msdos /dev/sdb1

mkfs.xfs /dev/sdb1

mkfs.vfat /dev/sdb1

 

Подмонтируем созданную партицию

mkdir /mount

 

cat /etc/fstab

/dev/sdb1 /mount ext4 defaults 0 0

 

mount /dev/sdb1

 

Отмонтируем и удалим партицию

umount /dev/sdb1

fdisk /dev/sdb

 

Command (m for help): d

Selected partition 1

Partition 1 is deleted

 

 

Утилита для работы с партициями (parted)

parted

 

Справка

help

 

Выбрать диск для работы

select /dev/sdb

 

Создать метку (msdos или gpt)

mklabel msdos

 

Создать партицию ext4 размером 2ГБ первичную

mkpart

artition type? primary/extended? primary

File system type? [ext4]?

Start? 1

End? 2000

 

Вывод информации после создания

(parted) print

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdb: 2147MB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

Disk Flags:

 

Number  Start   End     Size    Type     File system  Flags

1             1049kB  2000MB  1999MB  primary  ext4

 

Выход

quit

 

Форматирование партиции,

mkfs.ext4 /dev/sdb1

 

parted

 

Изменяем размер партиции (из прошлого вывода Number - 1)

select /dev/sdb

(parted) resizepart

Partition number? 1

End?  [2000MB]? 1000

Warning: Shrinking a partition can cause data loss, are you sure you want to continue?

Yes/No? Yes

 

Удаление партиции

rm 1

 

Попытка восстановления партиции

rescue

Start? 1

End? 10000

 

print

 

Number  Start   End     Size    Type     File system  Flags

 1      1049kB  2000MB  1999MB  primary  ext4

 

Выход

q

 

6.    Управление ПО

 

Yum представляет собой консольный менеджер RPM пакетов.

 

помощь:

yum help

 

вывести список пакетов из репозиториев:

yum list

 

вывести по определенным совпадениям:

yum list 'vim*'

 

поиск пакета по совпадениям:

yum search vim

 

установка пакета (для примера vsftpd):

yum install vsftpd

 

удаление пакета:

yum remove vsftpd

 

обновление пакета:

yum update vsftpd

 

откатиться к предыдущей версии пакета:

yum downgrade vsftpd

 

обновить все пакеты:

yum update

 

вывести установленные пакеты:

yum list installed

 

проверить, установлен ли пакет:

yum list installed 'vim*'

 

вывести информацию о пакете:

yum info vim

 

вывести список зависимостей пакета:

yum deplist vim

 

проверить доступные обновления:

yum check-update

 

вывести список подключенных репозиториев:

yum repolist

 

вывести список транзакций(историю):

yum history list

 

вывести информацию по транзакции:

yum history info 5

 

откатить транзакцию:

yum history undo 5

 

логи yum:

cat /var/log/yum.log

 

 

Управление rpm пакетами

 

Установка пакета:

rpm -ihv "имя_пакета"

 

Удаление пакета:

rpm -e "имя_пакета"

 

Обновление пакета:

rpm -U "имя_пакета"

 

Поиск в установленных пакетов:

rpm -qa | grep "имя_пакета"

 

Вывести информацию о пакете:

rpm -qi "имя_пакета"

 

Список файлов, входящих в пакет:

rpm -ql "имя_пакета"

 

Вывести список всех пакетов:

rpm -qa | grep more

 

7.    Сеть и брандмауэр

 

Базовые сетевые настройки

Добавить машрут по умолчанию:

route add default gw 10.10.0.1

 

Добавить статический маршрут:

route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.10.0.1

 

 

Определить маршрут по умолчанию:

vi /etc/sysconfig/network

GATEWAY=10.0.2.1

 

Перезагружаем сервис, проверяем

service network restart

 

ip route show

default via 10.0.2.1 dev enp0s3 proto dhcp metric 100

10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.4 metric 100

 

Укажем dns сервера:

vi /etc/resolv.conf

nameserver 10.0.2.1

nameserver 8.8.8.8

 

service networking restart

 

 

Отключить SELINUX

vi /etc/sysconfig/selinux

SELINUX=disabled

reboot

 

 

Статический адрес на интерфейс (мой интерфейс определился как enp0s3):

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

 

Вариант статики:

TYPE=Ethernet

NM_CONTROLLED=no

BOOTPROTO=static

NAME=enp0s3

DEVICE=enp0s3

ONBOOT=yes

IPADDR=10.0.2.4

NETMASK=255.255.255.0

GATEWAY=10.0.2.1

DNS1=8.8.8.8

DNS2=10.0.2.1

 

 

Вариант dhcp:

TYPE=Ethernet

BOOTPROTO=DHCP

NAME=enp0s3

DEVICE=enp0s3

ONBOOT=yes

 

 

где:

DEVICE=<name>                физическое устройство

BOOTPROTO=<none|bootp|dhcp>  протокол

ONBOOT=<yes|no>              включение устройства в автозагрузку

IPADDR=<address>             IP адрес

GATEWAY=<address>            IP адрес шлюза

NETMASK=<mask>               маска сети

 

 

И перезагружаем:

systemctl restart network.service

 

 

 

Установить ifconfig (по умолчанию его не обнаружил в 7й версии):

yum install net-tools

ifconfig

 

Разрешить маршрутизацию пакетов:

vi /etc/sysctl.conf

net.ipv4.ip_forward = 1

sysctl -p

 

 

Установить iptables, запустить и добавить в автозагрузку выключить firewalld:

systemctl stop firewalld && systemctl disable firewalld

 

yum -y install iptables-services

 

systemctl start iptables.service && systemctl enable iptables.service

 

Выводим список правил:

iptables -L -v -n

 

 

Очистить все правила из всех цепочек

iptables -F

iptables -X

iptables -t nat -F

iptables -t nat -X

iptables -t mangle -F

iptables -t mangle -X

 

 

Разрешаем уже установленные соединения:

iptables -A INPUT --match state --state ESTABLISHED,RELATED -j ACCEPT

 

Петлевой интерфейс, разрешаем хождение траффика:

iptables --append INPUT -i lo -j ACCEPT

 

Пинги разрешаем всем:

iptables -A INPUT --protocol icmp --icmp-type any -j ACCEPT

 

Протокол ssh разрешаем подключение из сети 10.0.2.0/24:

iptables -A INPUT -p tcp -s 10.0.2.0/24 --dport 22 -j ACCEPT

 

Политика по умолчанию все блокировать, что не подходит под правила:

iptables --policy INPUT DROP

 

 

Теперь увидим количесиво пакетов, совпавших с правилами:

iptables -L INPUT -v --line-numbers

Chain INPUT (policy DROP 0 packets, 0 bytes)

num pkts bytes target  prot opt in   out   source       destination

1    118  8720 ACCEPT  all  --  any  any   anywhere     anywhere     state RELATED,ESTABLISHED

2      0     0 ACCEPT  all  --  lo   any   anywhere     anywhere

3      0     0 ACCEPT  icmp --  any  any   anywhere     anywhere     icmp any

4      1    44 ACCEPT  tcp  --  any  any   10.0.2.0/24  anywhere     tcp dpt:ssh

 

 

Удалить правило можно по указанию цепочки и номеру:

iptables -D INPUT 3

 

 

Сохранить правила в iptables после перезагрузки можно так:

 

1. Сохранить правила iptables в файл:

/sbin/iptables-save > /root/iptables

 

2. Загрузить правила iptables из файла:

/sbin/iptables-restore < /root/iptables

 

3. Добавить правила в автозагрузку:

vi /etc/rc.d/rc.local

/sbin/iptables-restore < /root/iptables

 

4. Настройки iptables:

vi /etc/sysconfig/iptables-config

IPTABLES_SAVE_ON_STOP="yes"

IPTABLES_SAVE_ON_RESTART="yes"

 

 

Немного о теории и примеры iptables

 

Очень кратко рассмотрим основы бранмауэра iptables

 

Он встроен в ядро Linux и имеет 3 основные цепочки правил:

INPUT - обрабатывает входящие пакеты

FORWARD - обрабатывает транзитные соединения

OUTPUT - обрабатывает  исходящие пакеты

 

Две дополнительные цепочки:

PREROUTING - обрабатывает пакеты перед обработкой iptables

POSTROUTING - обрабатывает все проходящие пакеты после прохождения цепочки FORWARD

 

5 таблиц (используются для различных действий над пакетами):

RAW - используется для работы с "сырыми" пакетами(еще не прошедшими обработку)

MANGLE - используется для модификации пакетов

NAT - используется для NAT(когда сервер используется в качестве маршрутизатора)

FILTER - основная таблица фильтрации пакетов

 

Возможные варианты действий:

ACCEPT - разрешить прохождение пакета далее по цепочке

DROP - отбросить пакет

REJECT - отбросить пакет, отправить сообщении отправителю об отклонении пакета

LOG - записать запись о пакете в файл лога

 

Основные действия:

-A - добавить правило в цепочку

-С - проверить все правила

-D - удалить правило

-I - вставить правило с нужным номером

-L - вывести все правила в текущей цепочке

-S - вывести все правила

-F - очистить все правила

-N - создать цепочку

-X - удалить цепочку

-P - установить действие по умолчанию

 

Дополнительные опции:

-p - протокол ( tcp, udp, udplite, icmp, icmpv6, esp, ah, sctp, mh )

-s - ip адрес отправителя пакета

-d - ip адрес получателя пакета

-i - входной сетевой интерфейс

-o - исходящий сетевой интерфейс

-j - выбрать действие при совпадении с правилом

 

Общий формат правила:

iptables -t <таблица> <действие> <цепочка> <доп_опции>

 

 

Установка iptables:

yum install iptables

 

 

Примеры вывода првил с номерами, количеством пакетов и байт, ip адресов:

iptables -L

iptables -L INPUT -v

iptables -L INPUT -v --line-numbers

iptables -L INPUT -v -n

 

Очистить (примеры):

iptables -F input

iptables -F

iptables -t nat -F

iptables -t mangle -F

 

 

Правила(Политики по умолчанию) по умолчанию(примеры):

iptables -p INPUT DROP

iptables -p OUTPUT ACCEPT

iptables -p FORWARD ACCEPT

 

iptables --policy INPUT DROP

iptables --policy OUTPUT ACCEPT

iptables --policy FORWARD ACCEPT

 

 

Пример блокировки определенного ip (входящие и исходящие):

iptables -A INPUT -s 1.1.1.1 -j DROP

iptables -A OUTPUT -s 1.1.1.1 -j DROP

 

Пример блокировки подсети:

iptables -A INPUT -s 1.1.1.0/24 -j DROP

iptables -A INPUT -s 1.1.1.0/255.255.255.0 -j DROP

 

Блокировка определенного протокола(ssh) для этой сети:

iptables -A INPUT -p tcp --dport ssh -s 1.1.1.0/24 -j DROP

 

 

8.    Пользователи, группы, права, файлы, поиск, ssh

 

Список пользователей хранится в:

/etc/passwd

 

формат: account:password:uid:gid:gecos:directory:shell

 

account — имя пользователя

password — зашифрованный пароль пользователя

UID — идентификационный номер пользователя

GID — идентификационный номер основной группы пользователя

GECOS — необязательный параметр для доп. информации

directory — $HOME - домашний каталог пользователя

shell — оболочка пользователя (чаще всего /bin/bash)

 

Файл хранящий зашифрованные пароли:

/etc/shadow

 

 

Для того, чтоб пользователь мог иметь права root, добавим его в группу root

usermod -a -G root user

passwd user

 

Или изначально создайте его в этой группе

useradd -g 0 user

 

 

Из под пользователя перейти под суперпользователя или другого указанного пользователя можно с помощью su:

Единственное условие - знать пароль root

su root

 

 

Создадим пользователя

 

useradd -m -g users -G games,audio -s /bin/bash newuser -p 123456

 

useradd -m -g [основная группа] -G [дополнительные группы] -s [оболочка] [имя пользователя] -p [пароль]

 

-m - создаст домашний каталог - /home/[имя пользователя]

-g - имя или номер основной группы пользователя

-G - список дополнительных групп (необязательно)

-s - задает командную оболочку

-p - задает пароль

 

Информация о пользователе

id user

 

Зададим пароль

passwd newuser

 

Удалить пользователя, -r удалит каталог пользователя

userdel -r newuser

 

Группы хранятся в файле:

/etc/group

 

Информаия о группах указанного пользователя

groups user

 

Создание новой группы

groupadd newgroup

 

Заводим пользователя в группу

gpasswd -a user newgroup

 

Выводим пользователя из группы

gpasswd -d user newgroup

 

Удаление группы

groupdel newgroup

 

 

Доступ по протоколу ssh для пользователя

 

Указываем порт, адрес, закрываем доступ root, разрешаем пользователям\группам

vi /etc/ssh/sshd_config

Port 22

ListenAddress 10.0.2.4

PermitRootLogin no

AllowUsers newuser, user

AllowGroups users

 

 

Добавить пользователя в разрешенную группу

usermod -a -G users user2

 

 

Рестартуем ssh сервис

systemctl list-units | grep ssh

  sshd.service

 

systemctl restart sshd.service

 

 

Подключаемся в формате - ssh user@host

 

 

 

Права доступа

 

 

Посмотрим права на файл:

ls -l /var/log/messages

-rw-r----- 1 root adm 154 Dec  7 03:27 /var/log/messages

 

Символы -rw-r----- поделим условно на 4 группы: -|rw-|r--|---

 

Первая группа - один символ, определяет тип файла

-  — обычный файл

d  — каталог

b  — файл блочного устройства

c  — файл символьного устройства

s  — сокет (socket)

p  — именованный канал (pipe)

l  — символическая ссылка (link)

 

Три остальные группы по три символа (rwx) указывают на права доступа к файлу

1я группа - владелец файла

2я группа - группа пользователей

3я группа - все остальные пользователи системы

 

r - чтение

w - запись

x - исполнение

 

 

Изменение прав на файлы и каталоги: утиоита chmod

 

Формат: chmod <категория> <действие> <права> <имя файла>

 

Категория:

u - пользователь - владелец

g - группа - владелец

o - пользователи, не входящие в группу-владельца данного файла

a - все пользователи

 

Действие:

либо + добавить право

либо удалить право

либо = заменить право

 

Набор прав:

r - чтение

w - запись

x – выполнение

 

Числовое представление:

0 --- нет прав

1 --x выполнение

2 -w- запись

3 -wx запись + выполнение

4 r-- чтение

5 r-x чтение + выполнение

6 rw- чтение + запись

7 rwx все права

 

Примеры:

chmod g+x file

chmod go-rw file

chmod ugo+rwx file

chmod 660 file - равносильно chmod ug+rw file

chmod +rw file - равносильно chmod a+rw file

chmod -R 660 /dir - задать права доступа для каталога и содержимого

 

 

Смена владельца или группы владельцев

 

Указать владельца

chown user file

 

Указать группу

chgrp user file - равносильно chown :user file

 

Указать владельца на каталог и рекурсивно вложенные подкаталоги и файлы

chown -R user /dir

 

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

chgrp -R user /dir - равносильно chown -R :user /dir

 

Указать владельца и группу на файл

chown user:user file

 

Указать владельца и группу рекурсивно на каталог

chown -R user:user /dir

 

Файлы

 

Вывод содержимого папки, -l - информация о правах, размер

ls

ls /home/user/

ls -l /root/

 

Перейти в папку

cd /root/

cd ../

 

В какой директории я нахожусь?

pwd

 

Удалить файлы, -r - рекурсивно файлы и папки, -rf - еще и без подтверждения

rm /home/user/file

rm -r /home/user/

rm -rf /home/user/

 

Удалить папку

rmdir /home/user/dir

 

Перемещение файлов

mv file_name newfile_name

 

Копирование файлов, -r - папок

cp file_name newfile_name

cp -r /etc /etc_bak

 

Создать папку, папки рекурсивно

mkdir /data

mkdir -p /data/f1/f2/f3

 

Создание ссылок, -s - сиволические (аналог - ярлык)

(после удаления оригинала, ссылка останется, нужно удалить вручную)

ln -s /data/f1 /data/f1s

 

Создать файл

/data/f1_file

 

 

Свободное место на диске

df

 

Опция -h (human-readable)

df -h

 

Размер указанного диска\раздела(слайса)

df -h /dev/sda1

 

 

 

Размер файлов\папок на диске

du /etc

 

Опция -h (human-readable)

du -h /etc

 

Без рекурсивного обхода папок, -s (summarize)

du -sh /etc

 

Поиск

 

Утилита поиска - find

 

Ключи:

-name — искать по имени файла

-type — указать тип для поиска: f=файл, d=каталог, l=ссылка (link), p=канал (pipe), s=сокет

-user — по пользователю - владельцу: имя пользователя или его UID

-group — по группе - владельцу: группа пользователя или ее GID

-size — размер

-ctime — время последнего изменения владельца или прав доступа к файлу (в днях)

-cmin — время последнего изменения владельца или прав доступа к файлу (в минутах)

-mtime — время последнего изменения файла (в днях)

-mmin — время последнего изменения файла (в минутах)

-delete — удалит все найденные файлы

-print - выведет все найденные файлы

-exec command {} \; — выполнение команды над найденными файлами

-ok — перед выполнением команды указанной в -exec, выдаёт запрос

-maxdepth — максимальный уровень вложенности для поиска. «-maxdepth 0» ограничивает поиск текущим каталогом

 

 

Поиск файлов, начинающихся с "new" начиная с корневого каталога

find / -name 'new*'

 

Поиск файлов, начинающихся с "new" в двух указанных директориях

find /usr/local/man /opt/local/man -name 'my*'

 

Поиск файлов в каталоге /var/log, изменённых в течение последних 5 минут

find /var/log -mmin -5 -print

 

Поиск файлов в каталоге /var/log, изменённых в течение последних суток

find /var/log -mtime +1 -print

 

Поиск с максимальной глубиной каталогов - 1

find /etc -maxdepth 1 -name "*.conf"

 

Поиск по несовпадению шаблона

find /etc -not -name "*.conf"

 

Поиск по совпадению и несовпадению

find /etc -name "*.d" -not -name "*.conf"

 

Поиск по размеру, в данном случаем между 30 и 300 мегабайт

find / -size +30M -size -300M

 

Поиск пыстых файлов

find / -type f -empty

 

Поиск пустых директорий

find / -type d -empty

 

Вывод найденных файлов

find /tmp -type f -name "test*" -print

 

Удаление найденных файлов

find /tmp -type f -name "test*" -delete

 

Передача найденных файлов команде

find /var/log -exec ls -ld {} \;

 

Передача найденных файлов на удаление

find /tmp -type f -name "test*" -exec rm -f {} \;

 

 

 

Утилиты поиска grep и egrep

 

Поиск слова user в файле (регистрозависмый поиск)

grep user /etc/passwd

 

Поиск слова user в файле (регистронезависмый поиск)

grep -i "User" /etc/passwd

 

Поиск строки, начинающейся в строке с user

grep "^user" /etc/passwd

 

Поиск слова user, начинается с указанных символов

grep "^[uU]ser" /etc/passwd

 

Поиск слова user, начинается с любого символа

grep "^.ser" /etc/passwd

 

Регулярное выражение

grep "x:[0-1]...:1000" /etc/passwd

 

Регулярное выражение

grep "x:[0-1]*:1000" /etc/passwd

 

Регулярное выражение

grep -r "^.ser" /etc/

 

Поиск рекурсивно по всем файлам в указанном каталоге

grep -h -r "^.ser" /etc/

 

Вывод номера строки

grep -n "[uU]ser" /etc/passwd

 

Подсветка

grep --color "[uU]ser" /etc/passwd

 

Поиск по 2м вариантам

egrep -w "[uU]ser|[rR]oot" /etc/passwd

 

9.    Процессы

 

Запустить процесс в фоновом режиме можно с помощью амперсанда - &:

(в данном примере в фоне запустится sleep на 900 секунд)

sleep 900 &

 

Посмотреть выполняющиеся в фоне процессы:

jobs

 

Вернуто процесс из фонового режима (1 - номер из вывода jobs):

fg 1

 

Остановить процесс:

ctrl + z

 

Запустить процесс (1 - номер из вывода jobs):

bg 1

 

 

Справка по ps(снимок процессов):

man ps

 

Вывести все процессы всех пользователей:

ps -aux

 

Вывести процессы с фильтрацией по критерию (пример спящие):

ps -aux | grep sleep

 

Остановить процесс:

kill "id процесса"

 

Остановить все процессы по названию:

killall sleep

 

 

Вывести дерево процессов:

pstree

 

 

pgrep просматривает активные процессы в системе и выдает идентификаторы процессов:

man pgrep

 

Вывести id процесса ssh:

pgrep ssh

 

Добавить в вывод имя процесса:

pgrep ssh -l

 

 

поиск процессов и уничтожение по имени:

pkill ssh

 

Просмотр сетевых соединений вместе с PID процесса

lsof -i

 

Процессы в реальном времени

(клавиша k дает возможность убить процесс, уровень 15 - мягкое завершение, 9 - жесткое)

top

 

 

Поиск пятерки топ ресурсоемких процессов по MEM

ps -auxf | sort -nr -k 4 | head -5

 

Поиск пятерки топ ресурсоемких процессов по CPU

ps -auxf | sort -nr -k 3 | head -5

 

 

Мониторинг сетевой активности iftop:

Установка

yum -y install epel-release

yum -y install iftop

 

В интерактивном режиме отображает траффик, может отображать порты

Вывод справки по командам - нажать ?

Выйти из справки по командам - нажать ?

N - преобразование в тип сервиса

S - показать порт источника

D - показать порт назначения

 

iftop

 

 

В выводе top или w, вверху мы можем видеть строку типа:

load averages:  7.06,  6.95,  6.94

 

load average — среднее значение загрузки системы

Усредненные величины за последние 1, 5, 15 минут

 

 

Упрощенно объясняя, число в load averages - кол-во процессов в ожидании исполнения

Т.е. простаивающие в очереди из-за нехватки ресурсов

 

 

Очень упрощенно и грубо по поводу кол-ва ядер и процессоров:

Средняя нагрузка 2.00 (на двухпроцессорном компьютере по одному ядру на процессор)

Эквивалентна по показателю средней нагрузке 1.00 (на однопроцессорном компьютере с одним ядром)

 

В данном примере 2.00 и 1.00 говорят нам об использовании 100% всех имеющихся ресурсов

 

 

Хотя это очень грубый пример, 2 ядра одного процессора не равны двум процессорам

Увеличение кол-ва ядер на пример на 1 не даст 100% прироста производительности

 

 

Но в общем:

100% на одноядерной системе отображается как 1.00

100% на двухъядерной системе отображается как 2.00

и т.д.

 

 

К примеру у нашей машины один процессор и 8 ядер:

cat /proc/cpuinfo

...

processor       : 1

cpu cores       : 8

...

 

Для нее показатель является нормой, перегруз отсутствует, есть небольшой запас:

load averages:  7.06,  6.95,  6.94

 

А тут мы наблюдаем уже перегруз, хоть и не очень сильный:

load averages:  9.00,  8.35,  8.42

 

 

 

10.                      Планировщик заданий cron

 

 

Планирощик cron служит для автоматизации выполнения задач.

 

Файл конфигурации системных заданий находится в /etc/crontab

 

 

Имеет следующий синтаксис:

 

-  -  -  -  -

| | | | |

| | | | ----- День недели (0 - 7) (Воскресенье =0 или =7)

| | | ------- Месяц (1 - 12)

| | --------- День (1 - 31)

| ----------- Час (0 - 23)

------------- Минута (0 - 59)

 

т.е. на примере это выглядит так:

 

30 20 * * * - каждый день в 20:30

05 20 * * 5 - каждую пятницу в 20:05

10 12 * * 1-5 - в будни в 12:10

05,25 * * * * - в 5 и 25 минут каждого часа

*/20 * * * * - каждые 20 минут

 

Папка системных задач находится по пути: /etc/cron.d/

 

Мануал cron вызывается как man cron

 

crontab -l выведет список существующих заданий пользователя.

 

crontab -e откроет на редактирование crontab файл пользователя.

 

Пример программы:

55 23  *  *  *    root    /root/script.sh > /dev/null

 

Второй параметр - имя из под которого запускается программа, в данном примере - root

 

Третий параметр - скрипт.

 

Можно не только запускать скрипты, но и давать стандартные команды консоли:

55 23  *  *  *    root    reboot

 

Управление доступом к планировщику пользователям системы прописывается тут:

/etc/cron.deny

/etc/cron.allow

 

В файл вносится имя пользователя (один логин на строку).

cron.allow имеет приоритет над cron.deny, если логин прописан в обоих, доступ будет открыт.

 

 

Пример из под учетной записи user

 

Вывести список заданий:

crontab -l

 

Создать задание:

crontab -e

 

Файл с заданиями появится в, пример:

cat /var/spool/cron/user

55   3  *  *  *    root    /home/user/script.sh > /dev/null

 

 

11.                      Репозитории ПО

 

 

Добавить репозиторий в CentOS возможно с помощью следующих способов

 

1. Установить rpm пакет с информацией о репозитории

 

2. Добавить секцию [repository] в /etc/yum.conf

 

3. Создать .repo файл в папке /etc/yum.repos.d

 

Достаточно в файле .repo указать:

[repository]

name=RepositoryName

baseurl=RepositoryUrl

 

 

Пример вывода стандартного файла репозиториев:

cat /etc/yum.repos.d/CentOS-Base.repo

 

[base]

name=CentOS-$releasever - Base

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra

#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

 

#released updates

[updates]

name=CentOS-$releasever - Updates

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra

#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

 

#additional packages that may be useful

[extras]

name=CentOS-$releasever - Extras

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra

#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

 

#additional packages that extend functionality of existing packages

[centosplus]

name=CentOS-$releasever - Plus

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra

#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/

gpgcheck=1

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

 

 

Где:

name - имя репозитория (возможно указать любое)

baseurl - ссылка на репозиторий в виде http, ftp, file ссылок

enabled - 1 - репозиторий включен, 0 - репозиторий отключен

mirrorlist - возможно указать ссылку на список адресов

gpgcheck - 1- проверять GPG подпись пакетов репозитория, 0 - не проверять

gpgkey - ссылка на GPG ключ репозитория

 

 

Установка epel-release (Extra Packages for Enterprise Linux)

 

yum -y install epel-release

 

Появится файл

cat /etc/yum.repos.d/epel.repo

[epel]

name=Extra Packages for Enterprise Linux 7 - $basearch

#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch

metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch

failovermethod=priority

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

 

[epel-debuginfo]

name=Extra Packages for Enterprise Linux 7 - $basearch - Debug

#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debug

metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch

failovermethod=priority

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

gpgcheck=1

 

[epel-source]

name=Extra Packages for Enterprise Linux 7 - $basearch - Source

#baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS

metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch

failovermethod=priority

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

gpgcheck=1

 

 

Обновление репозиториев

Обновление кэша пакетов происходит каждый раз при любом действие с yum

(выводе списка доступных репозиториев\списка пакетов и т.п.)

 

 

Удаление репозиториев

 

Установить утилиты работы с репозиториями

yum -y install yum-utils

 

 

Вывести список активных репозиториев

yum repolist

 

Где:

repo id - id репозитория

reponame - имя репозитория

status - кол-во пакетов

 

 

Удаление репозитория (пример - mariadb (repo id из предыдущего вывода))

yum-config-manager --disable mariadb

 

 

Очистить кэш yum

yum clean all

 

 

Пересоздать кэш yum

yum makecache

 

 

12.                      Логи

 

 

Файлы логов находятся в директории /var/log

 

Рассмотрим некоторые из них

 

/var/log/messages - включает в себя множество записей типа cron, почты, ядра, и многих других

 

/var/log/dmesg - включает в себя сообщения ядра в т.ч. процесса загрузки

 

/var/log/maillog - включает в себя сообщения электронной почты

 

/var/log/boot.log - включает в себя сообщения о загрузке системы

 

/var/log/lastlog - включает в себя сообщения последней сессии пользователей (используйте утилиту lastlog)

 

/var/log/cron - включает в себя сообщения сервиса cron

 

/var/log/yum.log - включает в себя сообщения пакетного менеджера yum

 

/var/log/secure - включает в себя сообщения аутентификации\авторизации в т.ч. ssh

 

 

 

Logrotate для ротации размера логов

 

 

Обновим пакеты

yum update -y

 

Установим утилиту

yum -y install logrotate

 

 

Файл конфигурации по умолчанию, допфайлы будут лежать в директории /etc/logrotate.d

cat /etc/logrotate.conf

weekly

rotate 4

create

dateext

include /etc/logrotate.d

/var/log/wtmp {

    monthly

    create 0664 root utmp

    minsize 1M

    rotate 1

}

/var/log/btmp {

    missingok

    monthly

    create 0600 root utmp

    rotate 1

}

 

 

Синтаксис описания лога

путь_к_файлу_логов {

    опции

}

 

 

Временные триггеры, когда выполнять могут быть такими

hourly - раз в час

daily - раз в день

weekly - раз в неделю

monthly - раз в месяц

yearly - раз в год

 

 

Возможные опции

rotate - сколько хранить копий старых логов

create - создать пустой файл лога после ротации старого файл лога

dateext - добавить дату ротации в названии старого лога

size - размер файла лога для ротации

compress - сжимать файл лога

delaycompress - не сжимать последний и предпоследний файл лога

maxage - ротация журналов по возрасту

mail - почтовые оповещение по окончании ротации

postrotate\endscript - выполнить команды\скрипты по окончании ротации

 

 

 

Создадим файл /etc/logrotate.d/all_logs.conf

/var/log/*.log {

    daily

    rotate 2

    size 5M

    compress

    dateext

            create 0644 root root

            postrotate

                service rsyslog restart

            endscript

}

 

 

Провести проверку без самого выполнения

logrotate -d /etc/logrotate.d/all_logs.conf

 

Запустить ротацию

logrotate -fv /etc/logrotate.d/all_logs.conf

 

 

 

Logrotate и cron

 

По умолчанию при установке logrotate создается файл crontab внутри /etc/cron.daily с именем logrotate

 

 

Пример ручного добавления в нужное время в планировщик (можно указать главный конфигурационный файл)

crontab -e

10 6 * * * /usr/sbin/logrotate -f /etc/logrotate.d/all_logs.conf

 

 

 

Журналирование событий - journald

 

 

Хранит сообщения в оперативной памяти

 

 

Уровни журналирования

0 - emergency

1 - alert

2 - critical

3 - error

4 - warning

5 - notice

6 - info

7 - debug

 

 

Утилита управления

journalctl

 

Просмотр сообщений определенного уровня

journalctl -p 4

 

Просмотр сообщений определенного сервиса (юнита)

journalctl -u network.service

 

 

Главный конфигурационный файл

/etc/systemd/journald.conf

[Journal]

#Storage=auto

#Compress=yes

#Seal=yes

#SplitMode=uid

#SyncIntervalSec=5m

#RateLimitInterval=30s

#RateLimitBurst=1000

#SystemMaxUse=

#SystemKeepFree=

#SystemMaxFileSize=

#RuntimeMaxUse=

#RuntimeKeepFree=

#RuntimeMaxFileSize=

#MaxRetentionSec=

#MaxFileSec=1month

#ForwardToSyslog=yes

#ForwardToKMsg=no

#ForwardToConsole=no

#ForwardToWall=yes

#TTYPath=/dev/console

#MaxLevelStore=debug

#MaxLevelSyslog=debug

#MaxLevelKMsg=notice

#MaxLevelConsole=info

#MaxLevelWall=emerg

#LineMax=48K

 

 

Включить хранение данных журнала на диске

[Journal]

Storage=persistent

 

 

Рестартуем службу

service systemd-journald restart

 

 

Журнал появится в директории на диске

/var/log/journal/

 

 

Сколько занимает журнал на диске

journalctl --disk-usage

Archived and active journals take up 16.0M on disk.

 

Установить максимальный размер журнала

journalctl --vacuum-size=1G

Vacuuming done, freed 0B of archived journals on disk.

 

Установить временной промежуток хранения журнала

journalctl --vacuum-time=1months

Vacuuming done, freed 0B of archived journals on disk.