From 01f899d831faa287c1b70ff3b097753dbb8c1a05 Mon Sep 17 00:00:00 2001 From: Magnus Root Date: Mon, 6 Apr 2026 11:02:36 +0300 Subject: [PATCH] Added about Linux --- README.md | 6 +- catalog/catalog.go | 2 +- catalog/linuxbook.go | 115 ++++++++ main.go | 16 +- modules/linuxmodules/linux_backup.go | 189 +++++++++++++ modules/linuxmodules/linux_bash.go | 238 ++++++++++++++++ modules/linuxmodules/linux_boot.go | 223 +++++++++++++++ modules/linuxmodules/linux_disks.go | 211 ++++++++++++++ modules/linuxmodules/linux_files.go | 266 +++++++++++++++++ modules/linuxmodules/linux_intro.go | 161 +++++++++++ modules/linuxmodules/linux_kernel.go | 109 +++++++ modules/linuxmodules/linux_logs.go | 175 ++++++++++++ modules/linuxmodules/linux_netfs.go | 346 +++++++++++++++++++++++ modules/linuxmodules/linux_network.go | 238 ++++++++++++++++ modules/linuxmodules/linux_packages.go | 191 +++++++++++++ modules/linuxmodules/linux_perfomance.go | 264 +++++++++++++++++ modules/linuxmodules/linux_processes.go | 207 ++++++++++++++ modules/linuxmodules/linux_registry.go | 69 +++++ modules/linuxmodules/linux_scripts.go | 318 +++++++++++++++++++++ modules/linuxmodules/linux_security.go | 276 ++++++++++++++++++ modules/linuxmodules/linux_streams.go | 135 +++++++++ modules/linuxmodules/linux_sysconfig.go | 191 +++++++++++++ modules/linuxmodules/linux_tools.go | 252 +++++++++++++++++ modules/linuxmodules/linux_users.go | 223 +++++++++++++++ rubric | Bin 1773730 -> 2023586 bytes 25 files changed, 4414 insertions(+), 7 deletions(-) create mode 100644 catalog/linuxbook.go create mode 100644 modules/linuxmodules/linux_backup.go create mode 100644 modules/linuxmodules/linux_bash.go create mode 100644 modules/linuxmodules/linux_boot.go create mode 100644 modules/linuxmodules/linux_disks.go create mode 100644 modules/linuxmodules/linux_files.go create mode 100644 modules/linuxmodules/linux_intro.go create mode 100644 modules/linuxmodules/linux_kernel.go create mode 100644 modules/linuxmodules/linux_logs.go create mode 100644 modules/linuxmodules/linux_netfs.go create mode 100644 modules/linuxmodules/linux_network.go create mode 100644 modules/linuxmodules/linux_packages.go create mode 100644 modules/linuxmodules/linux_perfomance.go create mode 100644 modules/linuxmodules/linux_processes.go create mode 100644 modules/linuxmodules/linux_registry.go create mode 100644 modules/linuxmodules/linux_scripts.go create mode 100644 modules/linuxmodules/linux_security.go create mode 100644 modules/linuxmodules/linux_streams.go create mode 100644 modules/linuxmodules/linux_sysconfig.go create mode 100644 modules/linuxmodules/linux_tools.go create mode 100644 modules/linuxmodules/linux_users.go diff --git a/README.md b/README.md index bd03bf7..431373b 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ **Требования:** Go 1.21+ ```bash -git clone https://gitverse.ru/magnusroot/rubric +git clone https://github.com/user/rubric cd rubric go build -o rubric . ``` @@ -32,7 +32,7 @@ go build -o rubric . Или сразу установить глобально: ```bash -go install gitverse.ru/magnusroot/rubric@latest +go install github.com/user/rubric@latest ``` --- @@ -218,4 +218,4 @@ var All = []Module{ Использует ANSI escape-коды. Работает в большинстве современных терминалов: iTerm2, Terminal.app, GNOME Terminal, Windows Terminal, tmux и других. -В средах без поддержки цвета (например, при перенаправлении вывода в файл) escape-коды будут видны как есть. При необходимости отключения цвета — установите переменную `NO_COLOR=1` перед запуском или реализуйте проверку `os.Getenv("NO_COLOR")` в `utils/display.go`. \ No newline at end of file +В средах без поддержки цвета (например, при перенаправлении вывода в файл) escape-коды будут видны как есть. При необходимости отключения цвета — установите переменную `NO_COLOR=1` перед запуском или реализуйте проверку `os.Getenv("NO_COLOR")` в `utils/display.go`. diff --git a/catalog/catalog.go b/catalog/catalog.go index 4d1c403..8608284 100644 --- a/catalog/catalog.go +++ b/catalog/catalog.go @@ -20,7 +20,7 @@ type Book struct { // All — список всех справочников var All = []Book{ GoBook, - // LinuxBook — будет добавлен позже + LinuxBook, } // Find ищет книгу по ключу или алиасу diff --git a/catalog/linuxbook.go b/catalog/linuxbook.go new file mode 100644 index 0000000..e28ccec --- /dev/null +++ b/catalog/linuxbook.go @@ -0,0 +1,115 @@ +package catalog + +import ( + "bufio" + "fmt" + "rubric/modules/linuxmodules" + "rubric/utils" + "strconv" + "strings" +) + +// LinuxBook — запись справочника Linux в главном меню +var LinuxBook = Book{ + Key: "linux", + Aliases: []string{"l", "lnx"}, + Title: "Справочник по GNU/Linux", + Description: "Основы GNU/Linux: файлы, процессы, сети, systemd, bash-скрипты и многое другое", + Run: runLinuxBook, +} + +func runLinuxBook(scanner *bufio.Scanner) { + for { + showLinuxMenu() + + input, ok := ReadLine(scanner) + if !ok { + return + } + if input == "" { + continue + } + if IsQuit(input) { + fmt.Printf("\n %s%sДо свидания!%s\n\n", + utils.ColorBold, utils.ColorCyan, utils.ColorReset) + return + } + if IsBack(input) { + return + } + + // По номеру + if n, err := strconv.Atoi(input); err == nil { + if n >= 1 && n <= len(linuxmodules.All) { + linuxmodules.All[n-1].Run() + waitLinuxBack(scanner) + continue + } + fmt.Printf("\n %s%sНомер %d вне диапазона (1–%d)%s\n", + utils.ColorBold, utils.ColorRed, n, len(linuxmodules.All), utils.ColorReset) + continue + } + + // По ключу + if m, ok := linuxmodules.Find(input); ok { + m.Run() + waitLinuxBack(scanner) + continue + } + + fmt.Printf("\n %s%sНе понял '%s'. Номер, ключ раздела, b — назад.%s\n", + utils.ColorBold, utils.ColorRed, input, utils.ColorReset) + } +} + +func showLinuxMenu() { + utils.Header("Справочник GNU/Linux") + + fmt.Printf(" %s%sРазделы:%s\n\n", + utils.ColorBold, utils.ColorWhite, utils.ColorReset) + + for i, m := range linuxmodules.All { + aliases := "" + if len(m.Aliases) > 0 { + aliases = fmt.Sprintf("%s [%s]%s", + utils.ColorDim, strings.Join(m.Aliases, ", "), utils.ColorReset) + } + fmt.Printf(" %s%s %2d.%s %s%-12s%s %s%-30s%s%s\n", + utils.ColorBold, utils.ColorCyan, i+1, utils.ColorReset, + utils.ColorYellow+utils.ColorBold, m.Key, utils.ColorReset, + utils.ColorWhite, m.Title, utils.ColorReset, + aliases, + ) + fmt.Printf(" %s%s%s\n\n", + utils.ColorDim, m.Description, utils.ColorReset) + } + + fmt.Printf(" %s%sРаздел (номер / ключ / b — главное меню / q — выход):%s ", + utils.ColorBold, utils.ColorGreen, utils.ColorReset) +} + +type linuxBackSignal struct{} + +func waitLinuxBack(scanner *bufio.Scanner) { + fmt.Printf("\n %s%s[Enter — назад в меню Linux, b — главное меню]%s ", + utils.ColorDim, utils.ColorCyan, utils.ColorReset) + if scanner.Scan() { + if IsBack(strings.TrimSpace(scanner.Text())) { + panic(linuxBackSignal{}) + } + } +} + +func init() { + orig := LinuxBook.Run + LinuxBook.Run = func(scanner *bufio.Scanner) { + defer func() { + if r := recover(); r != nil { + if _, ok := r.(linuxBackSignal); !ok { + panic(r) + } + } + }() + orig(scanner) + } +} diff --git a/main.go b/main.go index 266f0e1..270432f 100644 --- a/main.go +++ b/main.go @@ -7,11 +7,12 @@ import ( "os" "rubric/catalog" "rubric/modules/gomodules" + "rubric/modules/linuxmodules" "rubric/utils" ) func main() { - book := flag.String("book", "", "открыть справочник напрямую (например: -book go)") + book := flag.String("book", "", "открыть справочник напрямую (go, linux)") topic := flag.String("topic", "", "открыть раздел (используется вместе с -book)") list := flag.Bool("list", false, "список всех справочников и разделов") help := flag.Bool("help", false, "справка по использованию") @@ -29,7 +30,7 @@ func main() { return } - // -book go -topic basics + // -book X -topic Y if *book != "" && *topic != "" { switch *book { case "go", "g", "golang": @@ -41,6 +42,15 @@ func main() { os.Exit(1) } m.Run() + case "linux", "l", "lnx": + m, ok := linuxmodules.Find(*topic) + if !ok { + fmt.Printf("\n %s%sРаздел '%s' не найден в справочнике Linux.%s\n", + utils.ColorBold, utils.ColorRed, *topic, utils.ColorReset) + linuxmodules.ListModules() + os.Exit(1) + } + m.Run() default: fmt.Printf("\n %s%sСправочник '%s' не найден.%s\n", utils.ColorBold, utils.ColorRed, *book, utils.ColorReset) @@ -50,7 +60,7 @@ func main() { return } - // -book go + // -book X if *book != "" { b, ok := catalog.Find(*book) if !ok { diff --git a/modules/linuxmodules/linux_backup.go b/modules/linuxmodules/linux_backup.go new file mode 100644 index 0000000..8928da4 --- /dev/null +++ b/modules/linuxmodules/linux_backup.go @@ -0,0 +1,189 @@ +package linuxmodules + +import ( + "rubric/utils" +) + +var BackupModule = Module{ + Key: "backup", + Aliases: []string{"bk", "tar", "бэкап"}, + Title: "Резервное копирование", + Description: "Темы 38–40: tar, инкрементальные бэкапы, rsync, VDO", + Run: showBackup, +} + +func showBackup() { + utils.Header("Linux — Резервное копирование") + + // ─── 38. tar ────────────────────────────────────────────────── + utils.Section("38. Создание бэкапов с tar") + + utils.Println("tar — основной инструмент архивирования в Linux.") + utils.Println(utils.ColorBold + "\nОсновные флаги tar:" + utils.ColorReset) + utils.Code(`c — create (создать архив) +x — extract (извлечь) +t — list (показать содержимое) +v — verbose (подробный вывод) +f — file (имя файла архива) +z — gzip (сжатие gzip, .tar.gz / .tgz) +j — bzip2 (сжатие bzip2, .tar.bz2) +J — xz (сжатие xz, .tar.xz) +p — preserve permissions (сохранить права) +C — change directory (распаковать в указанную папку)`) + + utils.Println(utils.ColorBold + "Создание архива:" + utils.ColorReset) + utils.Code(`# Создать архив: +tar -cvf archive.tar /path/to/dir # без сжатия +tar -czvf archive.tar.gz /etc/ # с gzip +tar -cjvf archive.tar.bz2 /var/www/ # с bzip2 +tar -cJvf archive.tar.xz /home/alice/ # с xz (медленнее, лучше) + +# Создать с меткой даты: +tar -czvf backup_$(date +%Y%m%d_%H%M).tar.gz /etc/ + +# Исключить директории: +tar -czvf backup.tar.gz /home/ \ + --exclude=/home/.cache \ + --exclude='/home/*/.local' + +# Архивировать только изменённые файлы: +tar -czvf backup.tar.gz --newer "2024-01-01" /home/`) + + utils.Println(utils.ColorBold + "Извлечение архива:" + utils.ColorReset) + utils.Code(`# Извлечь в текущую директорию: +tar -xvf archive.tar +tar -xzvf archive.tar.gz + +# Извлечь в указанную директорию: +tar -xzvf archive.tar.gz -C /tmp/restore/ + +# Извлечь только конкретные файлы: +tar -xzvf archive.tar.gz etc/nginx/nginx.conf + +# Просмотр содержимого без распаковки: +tar -tzvf archive.tar.gz +tar -tzvf archive.tar.gz | grep nginx`) + + utils.Println(utils.ColorBold + "rsync — синхронизация файлов:" + utils.ColorReset) + utils.Code(`# Базовый синтаксис: rsync [опции] источник назначение + +# Опции: +-a — архивный режим (-rlptgoD: рекурсия, права, время...) +-v — verbose +-z — сжатие при передаче +-P — прогресс + продолжение +-n — dry-run (симуляция без изменений) +--delete — удалять файлы которых нет в источнике +-e ssh — использовать SSH + +# Локальная синхронизация: +rsync -av /source/ /dest/ # / после source — содержимое (без самой папки) +rsync -av /source /dest/ # без / — копирует саму папку + +# По сети через SSH: +rsync -avzP /home/alice/ user@server:/backup/alice/ +rsync -avzP user@server:/data/ /local/backup/ + +# Зеркало (с удалением лишнего): +rsync -av --delete /source/ /mirror/ + +# Бэкап с сохранением удалённых файлов: +rsync -av --backup --backup-dir=/backup/old-$(date +%Y%m%d) \ + --delete /source/ /mirror/`) + + // ─── 39. Инкрементальные бэкапы ─────────────────────────────── + utils.Section("39. Инкрементальные бэкапы с tar") + + utils.Println("Инкрементальный бэкап — сохраняет только изменения с момента последнего бэкапа.") + utils.Code(`# tar поддерживает инкрементальные бэкапы через snapshot-файл. +# Snapshot хранит список файлов и время последнего изменения. + +# Полный бэкап (level 0): +tar -czvf backup_full_$(date +%Y%m%d).tar.gz \ + --listed-incremental=/var/backup/snapshot.snar \ + /home/ + +# Инкрементальный бэкап (только изменения): +tar -czvf backup_incr_$(date +%Y%m%d_%H%M).tar.gz \ + --listed-incremental=/var/backup/snapshot.snar \ + /home/ + +# Восстановление: сначала полный, затем все инкрементальные по порядку: +tar -xzvf backup_full_20240101.tar.gz \ + --listed-incremental=/dev/null -C /restore/ +tar -xzvf backup_incr_20240102.tar.gz \ + --listed-incremental=/dev/null -C /restore/ + +# Просмотр инкрементального архива: +tar -tzvf backup_incr.tar.gz --listed-incremental=/dev/null`) + + utils.Println(utils.ColorBold + "Скрипт автоматического бэкапа:" + utils.ColorReset) + utils.Code(`#!/bin/bash +set -euo pipefail + +BACKUP_DIR="/backup" +SOURCE="/home /etc /var/www" +SNAPSHOT="/var/backup/snapshot.snar" +DATE=$(date +%Y%m%d_%H%M) +LOG="/var/log/backup.log" + +log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG"; } + +log "Начало бэкапа" + +# Полный бэкап по воскресеньям, инкрементальный остальные дни: +if [ "$(date +%u)" -eq 7 ]; then + cp "$SNAPSHOT" "${SNAPSHOT}.prev" 2>/dev/null || true + ARCHIVE="$BACKUP_DIR/full_$DATE.tar.gz" + tar -czvf "$ARCHIVE" --listed-incremental="$SNAPSHOT" $SOURCE + log "Полный бэкап: $ARCHIVE" +else + ARCHIVE="$BACKUP_DIR/incr_$DATE.tar.gz" + tar -czvf "$ARCHIVE" --listed-incremental="$SNAPSHOT" $SOURCE + log "Инкрементальный бэкап: $ARCHIVE" +fi + +# Удалить старые бэкапы (оставить за 30 дней): +find "$BACKUP_DIR" -name "*.tar.gz" -mtime +30 -delete +log "Старые бэкапы очищены. Готово."`) + + // ─── 40. VDO ────────────────────────────────────────────────── + utils.Section("40. Дедупликация с VDO (Virtual Data Optimizer)") + + utils.Println("VDO — технология RHEL для дедупликации и сжатия данных на блочном уровне.") + utils.Println("Уменьшает занимаемое место на диске без изменения работы приложений.") + utils.Code(`# VDO доступен в RHEL/CentOS. Установка: +dnf install vdo kmod-kvdo + +# Создать VDO-устройство поверх блочного (/dev/sdb): +vdo create --name=vdo_data \ + --device=/dev/sdb \ + --vdoLogicalSize=100G # виртуальный размер (больше физического) + +# Посмотреть VDO-устройства: +vdo list +vdo status --name=vdo_data + +# Создать ФС на VDO: +mkfs.ext4 -E nodiscard /dev/mapper/vdo_data +mount /dev/mapper/vdo_data /mnt/data + +# Статистика экономии: +vdostats --human-readable +# Показывает: физический размер / использовано / коэффициент сжатия + +# VDO в /etc/fstab: +/dev/mapper/vdo_data /mnt/data ext4 defaults,x-systemd.requires=vdo.service 0 2 + +# Запустить/остановить: +vdo start --name=vdo_data +vdo stop --name=vdo_data + +# Удалить VDO: +vdo remove --name=vdo_data --force`) + + utils.Note("VDO хорошо работает для виртуализации, контейнеров и бэкапов — там много одинаковых данных.") + utils.Note("LVM 2.3+ поддерживает VDO напрямую через lvcreate --type vdo.") + + utils.Footer() +} diff --git a/modules/linuxmodules/linux_bash.go b/modules/linuxmodules/linux_bash.go new file mode 100644 index 0000000..30be653 --- /dev/null +++ b/modules/linuxmodules/linux_bash.go @@ -0,0 +1,238 @@ +package linuxmodules + +import ( + "fmt" + "rubric/utils" +) + +var BashModule = Module{ + Key: "bash", + Aliases: []string{"sh", "shell", "баш"}, + Title: "Bash: основы и переменные", + Description: "Темы 12–13: bash-completion, alias, type, переменные окружения", + Run: showBash, +} + +func showBash() { + utils.Header("Linux — Bash: основы и переменные") + + // ─── 12. Bash #1 ────────────────────────────────────────────── + utils.Section("12. Bash #1: bash-completion, alias, type") + + utils.Println(utils.ColorBold + "bash-completion — автодополнение Tab:" + utils.ColorReset) + utils.Code(`Tab — дополнить команду / путь / аргумент +Tab Tab — показать все варианты + +# Примеры: +git che → git checkout +ls /etc/sy → ls /etc/systemd/ +ssh us → ssh user@hostname (из ~/.ssh/config) +systemctl st → systemctl start/status/stop + +# Установить расширенный bash-completion: +# Debian/Ubuntu: apt install bash-completion +# RHEL/Fedora: dnf install bash-completion +# Активировать в ~/.bashrc: +[ -f /etc/bash_completion ] && . /etc/bash_completion`) + + utils.Println(utils.ColorBold + "alias — псевдонимы команд:" + utils.ColorReset) + utils.Code(`# Посмотреть все алиасы: +alias + +# Создать алиас (действует до конца сессии): +alias ll='ls -la' +alias la='ls -la' +alias ..='cd ..' +alias ...='cd ../..' +alias grep='grep --color=auto' +alias rm='rm -i' # защита от случайного удаления +alias df='df -h' +alias free='free -h' +alias update='sudo apt update && sudo apt upgrade' + +# Использование алиаса: +ll /etc + +# Удалить алиас: +unalias ll + +# Посмотреть что делает алиас: +alias ll`) + + utils.Println(utils.ColorBold + "Постоянные алиасы — добавить в ~/.bashrc:" + utils.ColorReset) + utils.Code(`# ~/.bashrc +alias ll='ls -la --color=auto' +alias la='ls -la' +alias l='ls -CF' +alias ..='cd ..' +alias grep='grep --color=auto' +alias h='history' +alias c='clear' + +# Применить без перезапуска терминала: +source ~/.bashrc +# или: +. ~/.bashrc`) + + utils.Println(utils.ColorBold + "type — определить тип команды:" + utils.ColorReset) + utils.Code(`type ls +# ls is aliased to 'ls --color=auto' + +type cd +# cd is a shell builtin + +type python3 +# python3 is /usr/bin/python3 + +type ll +# ll is aliased to 'ls -la' + +type if +# if is a shell keyword + +# Опции: +type -a ls # все варианты (алиас + файл) +type -t ls # только тип: alias/builtin/file/keyword`) + + utils.Println(utils.ColorBold + "which и whereis:" + utils.ColorReset) + utils.Command("which python3", "полный путь к исполняемому файлу") + utils.Command("which -a python", "все версии python в PATH") + utils.Command("whereis nginx", "бинарник, исходники, man-страница") + utils.Command("command -v git", "путь или алиас (POSIX-совместимо)") + fmt.Println() + utils.Println(utils.ColorBold + "Работа с историей команд:" + utils.ColorReset) + utils.Command("history", "полная история") + utils.Command("history 20", "последние 20 команд") + utils.Command("!42", "выполнить команду №42") + utils.Command("!!", "повторить последнюю команду") + utils.Command("!ls", "последняя команда начинающаяся с ls") + utils.Command("Ctrl+R", "интерактивный поиск по истории") + utils.Command("history -c", "очистить историю") + fmt.Println() + utils.Code(`# Файл истории: ~/.bash_history +# Управление историей через переменные в ~/.bashrc: +HISTSIZE=10000 # размер в памяти +HISTFILESIZE=20000 # размер файла +HISTCONTROL=ignoredups # не сохранять дубли +HISTCONTROL=ignorespace # команды с пробелом впереди не сохраняются +# Временные метки в истории: +HISTTIMEFORMAT="%F %T "`) + + // ─── 13. Bash #2: переменные ────────────────────────────────── + utils.Section("13. Bash #2: переменные") + + utils.Println(utils.ColorBold + "Переменные оболочки:" + utils.ColorReset) + utils.Code(`# Создать переменную: +name="Alice" # без пробелов вокруг = +count=42 +PATH_BACKUP=$PATH # использовать значение другой переменной + +# Использовать переменную ($ перед именем): +echo $name # Alice +echo "Привет, $name!" # Привет, Alice! +echo "Привет, ${name}!" # фигурные скобки — явное обозначение + +# Удалить переменную: +unset name`) + + utils.Println(utils.ColorBold + "Переменные окружения (Environment Variables):" + utils.ColorReset) + utils.Code(`# Переменные оболочки vs переменные окружения: +# - переменная оболочки видна только в текущем shell +# - переменная окружения (export) передаётся дочерним процессам + +# Экспортировать: +export name="Alice" +export PATH="$PATH:/opt/myapp/bin" + +# Или сразу: +export count=42 + +# Посмотреть все переменные окружения: +env +printenv +printenv PATH # конкретная переменная +echo $PATH # то же`) + + utils.Println(utils.ColorBold + "Важные системные переменные:" + utils.ColorReset) + utils.Code(`PATH — список директорий для поиска команд (: разделитель) + /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin +HOME — домашняя директория (~) /home/alice +USER — имя пользователя alice +LOGNAME — логин пользователя alice +SHELL — оболочка пользователя /bin/bash +TERM — тип терминала xterm-256color +LANG — язык/локаль en_US.UTF-8 +LC_ALL — переопределить все локали +PWD — текущая директория /home/alice/docs +OLDPWD — предыдущая директория +PS1 — приглашение командной строки +PS2 — вторичное приглашение (>) +EDITOR — редактор по умолчанию vim +VISUAL — визуальный редактор vim +PAGER — пагинатор less +HISTSIZE — размер истории в памяти +RANDOM — случайное число 0-32767`) + + utils.Println(utils.ColorBold + "Специальные переменные bash:" + utils.ColorReset) + utils.Code(`$0 — имя скрипта / оболочки +$1..$9 — позиционные параметры (аргументы скрипта) +$@ — все аргументы как отдельные строки +$* — все аргументы как одна строка +$# — количество аргументов +$? — код возврата последней команды (0 = успех) +$$ — PID текущего процесса +$! — PID последнего фонового процесса +$_ — последний аргумент предыдущей команды`) + + utils.Code(`# Примеры: +echo $? # 0 если последняя команда успешна +ls /nonexistent +echo $? # 2 (или другой ненулевой) — ошибка + +echo $$ # PID bash +echo $RANDOM # случайное число`) + + utils.Println(utils.ColorBold + "Работа со строками переменных:" + utils.ColorReset) + utils.Code(`name="alice" + +${name} → alice +${name^} → Alice (первая буква заглавная) +${name^^} → ALICE (все заглавные) +${name,,} → alice (все строчные) + +str="hello world" +${#str} → 11 (длина строки) +${str:0:5} → hello (подстрока с 0, длиной 5) +${str:6} → world (с позиции 6 до конца) + +path="/home/user/file.txt" +${path##*/} → file.txt (удалить до последнего /) +${path%/*} → /home/user (удалить от последнего /) +${path%.*} → /home/user/file (удалить расширение) +${path##*.} → txt (только расширение) + +# Значения по умолчанию: +${var:-default} → default если var не задана или пустая +${var:=default} → присвоить и вернуть default если пустая +${var:?ошибка} → вывести ошибку если пустая`) + + utils.Println(utils.ColorBold + "Настройка ~/.bashrc и ~/.bash_profile:" + utils.ColorReset) + utils.Code(`~/.bashrc — выполняется при каждом запуске интерактивного bash +~/.bash_profile — выполняется при входе в систему (login shell) +~/.profile — POSIX-совместимый аналог .bash_profile +~/.bash_logout — выполняется при выходе + +# Типичный ~/.bashrc: +export PATH="$HOME/.local/bin:$PATH" +export EDITOR=vim +alias ll='ls -la' +alias ..='cd ..' + +# ~/.bash_profile обычно вызывает ~/.bashrc: +[[ -f ~/.bashrc ]] && . ~/.bashrc + +# Применить изменения без перезапуска: +source ~/.bashrc`) + + utils.Footer() +} diff --git a/modules/linuxmodules/linux_boot.go b/modules/linuxmodules/linux_boot.go new file mode 100644 index 0000000..887ce72 --- /dev/null +++ b/modules/linuxmodules/linux_boot.go @@ -0,0 +1,223 @@ +package linuxmodules + +import ( + "fmt" + "rubric/utils" +) + +var BootModule = Module{ + Key: "boot", + Aliases: []string{"bo", "systemd", "grub", "загрузка"}, + Title: "Загрузка системы и systemd", + Description: "Темы 33–35, 41: GRUB, systemd, юниты, управление сервисами", + Run: showBoot, +} + +func showBoot() { + utils.Header("Linux — Загрузка системы и systemd") + + // ─── 33. GRUB ───────────────────────────────────────────────── + utils.Section("33. Загрузчик GRUB") + + utils.Println("Процесс загрузки Linux:") + utils.Code(`BIOS/UEFI → MBR/GPT → GRUB → Ядро (vmlinuz) → initrd/initramfs → /sbin/init (systemd) → Сервисы → Пользователь + +BIOS/UEFI — инициализация железа, поиск загрузочного устройства +MBR/GPT — первый сектор диска, указывает где GRUB +GRUB — загрузчик, выбор ядра/ОС +vmlinuz — сжатое ядро Linux +initramfs — временная корневая ФС в памяти (для монтирования /) +systemd — PID 1, запускает все сервисы`) + + utils.Println(utils.ColorBold + "GRUB — конфигурация:" + utils.ColorReset) + utils.Code(`# Основные файлы: +/boot/grub/grub.cfg — итоговая конфигурация (не редактировать!) +/etc/grub.d/ — скрипты генерации конфига +/etc/default/grub — настройки + +# Редактировать настройки: +sudo nano /etc/default/grub + +# Ключевые параметры /etc/default/grub: +GRUB_DEFAULT=0 # пункт меню по умолчанию (0 = первый) +GRUB_TIMEOUT=5 # таймаут выбора (сек) +GRUB_CMDLINE_LINUX="" # параметры ядра для всех записей +GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" # для обычной загрузки + +# Применить изменения: +sudo update-grub # Debian/Ubuntu +sudo grub2-mkconfig -o /boot/grub2/grub.cfg # RHEL/Fedora`) + + utils.Println(utils.ColorBold + "GRUB — установка и восстановление:" + utils.ColorReset) + utils.Code(`# Установить GRUB на диск: +sudo grub-install /dev/sda # Debian/Ubuntu +sudo grub2-install /dev/sda # RHEL/Fedora + +# Восстановление GRUB через LiveCD: +mount /dev/sda2 /mnt # корневой раздел +mount /dev/sda1 /mnt/boot/efi # EFI раздел (UEFI) +mount --bind /dev /mnt/dev +mount --bind /proc /mnt/proc +mount --bind /sys /mnt/sys +chroot /mnt +grub-install /dev/sda +update-grub +exit; reboot`) + + utils.Println(utils.ColorBold + "Параметры ядра при загрузке:" + utils.ColorReset) + utils.Code(`# Нажать 'e' в меню GRUB для редактирования записи. +# Найти строку linux/linuxefi и добавить параметры в конец: + +ro quiet splash — стандартная загрузка +rw single — однопользовательский режим (recovery) +init=/bin/bash — минимальный shell (без systemd) +nomodeset — без KMS (проблемы с видео) +rd.break — остановить в initramfs (RHEL) +systemd.unit=rescue.target — аварийный режим`) + + // ─── 34. systemd ────────────────────────────────────────────── + utils.Section("34. Система инициализации — systemd") + + utils.Println("systemd — PID 1. Управляет всеми сервисами, монтированием, логами.") + fmt.Println() + utils.Println(utils.ColorBold + "Юниты (Units):" + utils.ColorReset) + utils.Code(`Юнит — объект управления systemd. +Типы юнитов: +.service — сервис (nginx.service, sshd.service) +.socket — сокет (активация по запросу) +.target — группа юнитов (graphical.target = GUI) +.timer — планировщик (альтернатива cron) +.mount — точка монтирования +.path — отслеживание файлов/директорий +.slice — группа процессов (управление ресурсами) + +# Расположение юнитов: +/lib/systemd/system/ — системные (из пакетов) +/etc/systemd/system/ — пользовательские (переопределение) +/run/systemd/system/ — временные (runtime)`) + + // ─── 35. Управление сервисами ───────────────────────────────── + utils.Section("35. Системный менеджер systemd: управление сервисами") + + utils.Println(utils.ColorBold + "systemctl — основные команды:" + utils.ColorReset) + utils.Command("systemctl status nginx", "статус сервиса") + utils.Command("systemctl start nginx", "запустить") + utils.Command("systemctl stop nginx", "остановить") + utils.Command("systemctl restart nginx", "перезапустить") + utils.Command("systemctl reload nginx", "перечитать конфигурацию") + utils.Command("systemctl enable nginx", "включить автозапуск") + utils.Command("systemctl disable nginx", "выключить автозапуск") + utils.Command("systemctl enable --now nginx", "включить и сразу запустить") + utils.Command("systemctl disable --now nginx", "выключить и остановить") + utils.Command("systemctl is-active nginx", "активен? (active/inactive)") + utils.Command("systemctl is-enabled nginx", "в автозапуске? (enabled/disabled)") + utils.Command("systemctl is-failed nginx", "завершился с ошибкой?") + fmt.Println() + utils.Command("systemctl list-units", "список всех активных юнитов") + utils.Command("systemctl list-units --type=service", "только сервисы") + utils.Command("systemctl list-units --failed", "упавшие юниты") + utils.Command("systemctl list-unit-files", "все юниты и их состояние") + utils.Command("systemctl daemon-reload", "перечитать файлы юнитов (после изменений)") + fmt.Println() + utils.Println(utils.ColorBold + "Таргеты (targets) — уровни запуска:" + utils.ColorReset) + utils.Code(`poweroff.target — выключение (runlevel 0) +rescue.target — однопользовательский (runlevel 1) +multi-user.target — многопользовательский без GUI (runlevel 3) +graphical.target — с GUI (runlevel 5) +reboot.target — перезагрузка (runlevel 6) + +# Текущий таргет: +systemctl get-default + +# Изменить таргет по умолчанию: +systemctl set-default multi-user.target + +# Переключиться немедленно: +systemctl isolate multi-user.target + +# Выключение и перезагрузка: +systemctl poweroff +systemctl reboot +systemctl suspend +systemctl hibernate`) + + utils.Println(utils.ColorBold + "journalctl — просмотр логов systemd:" + utils.ColorReset) + utils.Command("journalctl", "все логи") + utils.Command("journalctl -u nginx", "логи конкретного сервиса") + utils.Command("journalctl -f", "следить в реальном времени") + utils.Command("journalctl -f -u nginx", "следить за nginx") + utils.Command("journalctl -n 50", "последние 50 строк") + utils.Command("journalctl --since '2024-01-15 10:00'", "с определённого времени") + utils.Command("journalctl --since '1 hour ago'", "за последний час") + utils.Command("journalctl -p err", "только ошибки (emerg alert crit err warning notice info debug)") + utils.Command("journalctl -b", "с момента последней загрузки") + utils.Command("journalctl -b -1", "предыдущая загрузка") + utils.Command("journalctl --disk-usage", "объём логов на диске") + utils.Command("journalctl --vacuum-size=100M", "оставить только 100МБ логов") + + // ─── 41. Systemd юниты ──────────────────────────────────────── + utils.Section("41. Создание systemd юнитов") + + utils.Println(utils.ColorBold + "Структура .service файла:" + utils.ColorReset) + utils.Code(`# /etc/systemd/system/myapp.service +[Unit] +Description=My Application +Documentation=https://example.com +After=network.target # запустить после сети +Requires=postgresql.service # обязательная зависимость +Wants=redis.service # желательная зависимость + +[Service] +Type=simple # forking, oneshot, notify, idle +User=myapp # от какого пользователя +Group=myapp +WorkingDirectory=/opt/myapp +ExecStart=/opt/myapp/bin/myapp --config /etc/myapp.conf +ExecReload=/bin/kill -HUP $MAINPID +Restart=on-failure # always, on-failure, on-abnormal +RestartSec=5 +StandardOutput=journal +StandardError=journal +Environment=NODE_ENV=production +EnvironmentFile=/etc/myapp/env + +# Ограничения: +MemoryMax=512M +CPUQuota=50% +LimitNOFILE=65536 + +[Install] +WantedBy=multi-user.target`) + + utils.Code(`# Применить новый юнит: +sudo systemctl daemon-reload +sudo systemctl enable --now myapp + +# Переопределить параметры (без редактирования оригинала): +sudo systemctl edit nginx # создаёт /etc/systemd/system/nginx.service.d/override.conf`) + + utils.Println(utils.ColorBold + "Timer юнит (альтернатива cron):" + utils.ColorReset) + utils.Code(`# /etc/systemd/system/backup.timer +[Unit] +Description=Ежедневный бэкап + +[Timer] +OnCalendar=*-*-* 02:00:00 # каждый день в 02:00 +OnCalendar=Mon *-*-* 03:00 # каждый понедельник в 03:00 +OnBootSec=15min # через 15 мин после загрузки +OnUnitActiveSec=1h # каждый час после последнего запуска +Persistent=true # запустить если пропустили время + +[Install] +WantedBy=timers.target + +# /etc/systemd/system/backup.service +[Unit] +Description=Скрипт бэкапа + +[Service] +Type=oneshot +ExecStart=/usr/local/bin/backup.sh`) + + utils.Footer() +} diff --git a/modules/linuxmodules/linux_disks.go b/modules/linuxmodules/linux_disks.go new file mode 100644 index 0000000..604e67e --- /dev/null +++ b/modules/linuxmodules/linux_disks.go @@ -0,0 +1,211 @@ +package linuxmodules + +import ( + "fmt" + "rubric/utils" +) + +var DisksModule = Module{ + Key: "disks", + Aliases: []string{"d", "lvm", "raid", "диски"}, + Title: "Диски, файловые системы, LVM и RAID", + Description: "Темы 22–26: разделы, mount, LVM, программный RAID", + Run: showDisks, +} + +func showDisks() { + utils.Header("Linux — Диски, файловые системы, LVM и RAID") + + // ─── 22. Работа с дисками ───────────────────────────────────── + utils.Section("22. Работа с дисками и разделами") + + utils.Println(utils.ColorBold + "Именование устройств:" + utils.ColorReset) + utils.Code(`/dev/sda — первый SATA/SCSI диск +/dev/sdb — второй диск +/dev/sda1 — первый раздел первого диска +/dev/sda2 — второй раздел первого диска +/dev/nvme0n1 — первый NVMe диск +/dev/nvme0n1p1 — первый раздел NVMe диска +/dev/vda — виртуальный диск (KVM/QEMU) +/dev/xvda — диск Xen +/dev/loop0 — loop-устройство (ISO-образ)`) + + utils.Println(utils.ColorBold + "Просмотр дисков и разделов:" + utils.ColorReset) + utils.Command("lsblk", "дерево блочных устройств") + utils.Command("lsblk -f", "с типом ФС и UUID") + utils.Command("lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE", "выбрать столбцы") + utils.Command("fdisk -l", "все диски и разделы (root)") + utils.Command("fdisk -l /dev/sda", "разделы диска sda") + utils.Command("parted -l", "таблицы разделов (GPT и MBR)") + utils.Command("blkid", "UUID и типы ФС всех устройств") + utils.Command("blkid /dev/sda1", "UUID конкретного раздела") + fmt.Println() + utils.Println(utils.ColorBold + "Разбивка диска (fdisk):" + utils.ColorReset) + utils.Code(`sudo fdisk /dev/sdb # интерактивная работа с разделами + +Команды fdisk: + p — показать таблицу разделов + n — новый раздел + d — удалить раздел + t — изменить тип раздела + l — список типов разделов + w — записать изменения (опасно!) + q — выйти без сохранения + +# Для GPT-дисков и дисков > 2ТБ — используйте parted или gdisk`) + + utils.Println(utils.ColorBold + "Создание файловой системы (mkfs):" + utils.ColorReset) + utils.Command("mkfs.ext4 /dev/sdb1", "создать ext4") + utils.Command("mkfs.xfs /dev/sdb1", "создать xfs") + utils.Command("mkfs.ext4 -L data /dev/sdb1", "с меткой 'data'") + utils.Command("mkswap /dev/sdb2", "создать swap") + utils.Command("swapon /dev/sdb2", "активировать swap") + utils.Command("swapon -s", "показать активные swap") + utils.Command("swapoff /dev/sdb2", "отключить swap") + fmt.Println() + utils.Println(utils.ColorBold + "Проверка и восстановление ФС:" + utils.ColorReset) + utils.Command("fsck /dev/sdb1", "проверить ФС (только при размонтированной!)") + utils.Command("fsck -n /dev/sdb1", "только проверить, не исправлять") + utils.Command("e2fsck -f /dev/sdb1", "принудительная проверка ext2/3/4") + utils.Command("xfs_repair /dev/sdb1", "восстановление XFS") + + utils.Println(utils.ColorBold + "Использование диска:" + utils.ColorReset) + utils.Command("df -h", "занятое и свободное место на ФС") + utils.Command("df -hT", "с типом ФС") + utils.Command("du -sh /var/log", "размер директории") + utils.Command("du -sh /*", "размер каждой директории в корне") + utils.Command("du -sh * | sort -h", "отсортировать по размеру") + utils.Command("ncdu /var", "интерактивный анализ (нужно установить)") + + // ─── 23–24. Файловые системы и монтирование ─────────────────── + utils.Section("23–24. Файловые системы и монтирование") + + utils.Println(utils.ColorBold + "mount — монтирование:" + utils.ColorReset) + utils.Command("mount", "список всех смонтированных ФС") + utils.Command("mount /dev/sdb1 /mnt/data", "монтировать раздел") + utils.Command("mount -t ext4 /dev/sdb1 /mnt", "указать тип ФС") + utils.Command("mount -o ro /dev/sdb1 /mnt", "только чтение") + utils.Command("mount -o remount,rw /", "перемонтировать с правами записи") + utils.Command("mount UUID=abc123 /mnt/data", "монтировать по UUID") + utils.Command("mount -a", "смонтировать всё из /etc/fstab") + utils.Command("umount /mnt/data", "размонтировать") + utils.Command("umount -l /mnt/data", "ленивое размонтирование (когда занято)") + utils.Command("lsof /mnt/data", "кто использует раздел (если umount отказывает)") + fmt.Println() + utils.Println(utils.ColorBold + "/etc/fstab — автомонтирование при старте:" + utils.ColorReset) + utils.Code(`# Формат: устройство точка_монтирования тип опции dump fsck +UUID=abc123 /mnt/data ext4 defaults 0 2 +/dev/sdb1 /mnt/data xfs defaults 0 0 +//server/share /mnt/smb cifs credentials=/etc/samba.creds 0 0 +tmpfs /tmp tmpfs defaults,size=2G 0 0 + +# Опции монтирования: +defaults — rw, suid, exec, auto, nouser, async +ro — только чтение +rw — чтение и запись +noexec — запрет запуска файлов +nosuid — игнорировать SUID/SGID биты +noatime — не обновлять atime (быстрее) +auto — монтировать при mount -a +noauto — не монтировать автоматически + +# Столбцы dump и fsck: +# dump: 0 = не бэкапить, 1 = бэкапить +# fsck: 0 = не проверять, 1 = / (первый), 2 = остальные`) + + utils.Note("Всегда используйте UUID вместо /dev/sdb1 в fstab — имена устройств могут меняться после перезагрузки.") + + // ─── 25. LVM ────────────────────────────────────────────────── + utils.Section("25. Управление логическими томами — LVM") + + utils.Println("LVM позволяет гибко управлять дисковым пространством:") + utils.Println("объединять несколько дисков, изменять размер томов без перезагрузки.") + fmt.Println() + utils.Code(`Структура LVM: +PV (Physical Volume) — физический диск или раздел (/dev/sdb) +VG (Volume Group) — группа PV, единый пул пространства +LV (Logical Volume) — логический том из VG (аналог раздела) + +PV: /dev/sdb /dev/sdc + ↓ ↓ + VG: vg_data (объединённое пространство) + ↓ + LV: /dev/vg_data/lv_web /dev/vg_data/lv_db`) + + utils.Println(utils.ColorBold + "Создание LVM:" + utils.ColorReset) + utils.Code(`# 1. Создать Physical Volume: +pvcreate /dev/sdb /dev/sdc +pvs # показать PV +pvdisplay # подробно + +# 2. Создать Volume Group: +vgcreate vg_data /dev/sdb /dev/sdc +vgs # показать VG +vgdisplay vg_data + +# 3. Создать Logical Volume: +lvcreate -L 20G -n lv_web vg_data # 20 ГБ +lvcreate -l 100%FREE -n lv_db vg_data # всё свободное +lvs # показать LV +lvdisplay /dev/vg_data/lv_web + +# 4. Создать ФС и смонтировать: +mkfs.ext4 /dev/vg_data/lv_web +mount /dev/vg_data/lv_web /var/www`) + + utils.Println(utils.ColorBold + "Расширение LV:" + utils.ColorReset) + utils.Code(`# Расширить LV на 10 ГБ: +lvextend -L +10G /dev/vg_data/lv_web + +# Расширить ФС (ext4): +resize2fs /dev/vg_data/lv_web + +# Одной командой (ext4): +lvextend -L +10G -r /dev/vg_data/lv_web # -r = resize ФС + +# Для XFS (только увеличение): +xfs_growfs /var/www`) + + utils.Println(utils.ColorBold + "Добавить диск в VG:" + utils.ColorReset) + utils.Code(`pvcreate /dev/sdd +vgextend vg_data /dev/sdd`) + + // ─── 26. Программный RAID ───────────────────────────────────── + utils.Section("26. Программный RAID — MD (mdadm)") + + utils.Println("RAID — избыточный массив для надёжности и/или производительности.") + fmt.Println() + utils.Code(`Уровни RAID: +RAID 0 — страйпинг (производительность), без избыточности +RAID 1 — зеркало (надёжность), нужно 2 диска, использует 50% +RAID 5 — страйп + чётность, нужно 3+ дисков, теряем 1 диск +RAID 6 — двойная чётность, нужно 4+ дисков, теряем 2 диска +RAID 10 — зеркало + страйп, нужно 4 диска, теряем до N/2`) + + utils.Println(utils.ColorBold + "mdadm — управление программным RAID:" + utils.ColorReset) + utils.Code(`# Создать RAID 1 из двух дисков: +mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc + +# Создать RAID 5: +mdadm --create /dev/md0 --level=5 --raid-devices=3 \ + /dev/sdb /dev/sdc /dev/sdd + +# Состояние массива: +cat /proc/mdstat # текущее состояние +mdadm --detail /dev/md0 # подробная информация + +# Сохранить конфигурацию: +mdadm --detail --scan >> /etc/mdadm/mdadm.conf + +# Добавить запасной диск: +mdadm /dev/md0 --add /dev/sde + +# Удалить диск из массива: +mdadm /dev/md0 --fail /dev/sdb +mdadm /dev/md0 --remove /dev/sdb + +# Остановить массив: +mdadm --stop /dev/md0`) + + utils.Footer() +} diff --git a/modules/linuxmodules/linux_files.go b/modules/linuxmodules/linux_files.go new file mode 100644 index 0000000..71652ed --- /dev/null +++ b/modules/linuxmodules/linux_files.go @@ -0,0 +1,266 @@ +package linuxmodules + +import ( + "fmt" + "rubric/utils" +) + +var FilesModule = Module{ + Key: "files", + Aliases: []string{"f", "dirs", "файлы"}, + Title: "Файлы и директории", + Description: "Темы 06–10: пути, cp/mv/rm, ссылки, чтение файлов, nano и vi", + Run: showFiles, +} + +func showFiles() { + utils.Header("Linux — Файлы и директории") + + // ─── 06. Пути и директории ──────────────────────────────────── + utils.Section("06. Пути и директории") + + utils.Println(utils.ColorBold + "Абсолютный и относительный пути:" + utils.ColorReset) + utils.Code(`Абсолютный: начинается с / + /home/user/documents/file.txt + +Относительный: относительно текущей директории + documents/file.txt (из /home/user) + ../другой/файл (.. — родительская директория) + ./скрипт.sh (. — текущая директория)`) + + utils.Println(utils.ColorBold + "Специальные обозначения:" + utils.ColorReset) + utils.Code(`. — текущая директория +.. — родительская директория +~ — домашняя директория текущего пользователя +~/ — то же самое, используется в путях: ~/docs +- — предыдущая директория (cd -)`) + + utils.Println(utils.ColorBold + "Навигация:" + utils.ColorReset) + utils.Command("pwd", "показать текущую директорию (Print Working Directory)") + utils.Command("cd /etc", "перейти в /etc (абсолютный путь)") + utils.Command("cd docs", "перейти в docs (относительный)") + utils.Command("cd ..", "перейти в родительскую директорию") + utils.Command("cd ~", "перейти домой") + utils.Command("cd -", "вернуться в предыдущую директорию") + utils.Command("cd", "то же что cd ~") + fmt.Println() + utils.Println(utils.ColorBold + "Просмотр содержимого:" + utils.ColorReset) + utils.Command("ls", "список файлов текущей директории") + utils.Command("ls -l", "длинный формат (права, владелец, размер, дата)") + utils.Command("ls -a", "все файлы включая скрытые (начинаются с .)") + utils.Command("ls -la", "длинный формат + скрытые") + utils.Command("ls -lh", "размер в читаемом виде (K, M, G)") + utils.Command("ls -lt", "сортировка по времени (новые сверху)") + utils.Command("ls -ltr", "по времени в обратном порядке") + utils.Command("ls -R", "рекурсивно (все вложенные)") + utils.Command("ls /etc/*.conf", "glob-паттерн: все .conf в /etc") + fmt.Println() + utils.Code(`# Пример вывода ls -l: +drwxr-xr-x 2 alice users 4096 Jan 15 10:30 docs +-rw-r--r-- 1 alice users 512 Jan 14 09:00 file.txt +lrwxrwxrwx 1 alice users 7 Jan 13 12:00 link -> file.txt +│ │ │ │ │ │ │ +│ │ │ │ │ │ └ имя файла +│ │ │ │ │ └ дата изменения +│ │ │ │ └ размер (байты) +│ │ │ └ группа +│ │ └ владелец +│ └ количество жёстких ссылок +└ тип и права доступа`) + + utils.Println(utils.ColorBold + "Создание директорий:" + utils.ColorReset) + utils.Command("mkdir mydir", "создать директорию") + utils.Command("mkdir -p a/b/c", "создать вложенные директории") + utils.Command("mkdir -p project/{src,docs,tests}", "создать несколько сразу") + utils.Command("rmdir mydir", "удалить пустую директорию") + + // ─── 07. Создание и копирование файлов ─────────────────────── + utils.Section("07. Создание и копирование файлов") + + utils.Println(utils.ColorBold + "Создание файлов:" + utils.ColorReset) + utils.Command("touch file.txt", "создать пустой файл / обновить время доступа") + utils.Command("touch file{1..5}.txt", "создать file1.txt … file5.txt") + utils.Command("> file.txt", "создать пустой файл / очистить существующий") + utils.Command("echo 'текст' > file.txt", "записать текст в файл") + utils.Command("echo 'текст' >> file.txt", "добавить текст в конец файла") + fmt.Println() + utils.Println(utils.ColorBold + "Копирование (cp):" + utils.ColorReset) + utils.Command("cp src dst", "скопировать файл") + utils.Command("cp -r src/ dst/", "скопировать директорию рекурсивно") + utils.Command("cp -v src dst", "показать что копируется (-v = verbose)") + utils.Command("cp -i src dst", "спросить при перезаписи (-i = interactive)") + utils.Command("cp -p src dst", "сохранить права/метаданные (-p = preserve)") + utils.Command("cp -a src/ dst/", "архивный режим: -r + -p + символические ссылки") + utils.Command("cp *.txt /tmp/", "копировать все .txt в /tmp") + fmt.Println() + utils.Note("cp -r не сохраняет права и время по умолчанию. Для резервного копирования используйте cp -a.") + + // ─── 08. Перемещение, удаление, ссылки ─────────────────────── + utils.Section("08. Перемещение, переименование, удаление. Ссылки") + + utils.Println(utils.ColorBold + "Перемещение и переименование (mv):" + utils.ColorReset) + utils.Command("mv old.txt new.txt", "переименовать файл") + utils.Command("mv file.txt /tmp/", "переместить в /tmp") + utils.Command("mv -v src dst", "подробный вывод") + utils.Command("mv -i src dst", "спросить при перезаписи") + utils.Command("mv -n src dst", "не перезаписывать существующий") + fmt.Println() + utils.Println(utils.ColorBold + "Удаление (rm):" + utils.ColorReset) + utils.Command("rm file.txt", "удалить файл") + utils.Command("rm -r dir/", "удалить директорию рекурсивно") + utils.Command("rm -rf dir/", "принудительно, без подтверждений") + utils.Command("rm -i file.txt", "спросить перед удалением") + utils.Command("rm -v file.txt", "показать что удаляется") + fmt.Println() + utils.Note("rm -rf удаляет безвозвратно. Нет корзины. Будьте внимательны!") + utils.Code(`# Защита: никогда не делайте: +rm -rf / # удалит всю систему +rm -rf ./ # удалит текущую директорию + +# Безопаснее: перенести в /tmp, потом удалить +mv dangerous_dir /tmp/ && rm -rf /tmp/dangerous_dir`) + + utils.Println(utils.ColorBold + "Жёсткие ссылки (hard links):" + utils.ColorReset) + utils.Code(`Жёсткая ссылка — ещё одно имя для того же inode. + +ln file.txt hardlink.txt # создать жёсткую ссылку + +Особенности: +- указывает на те же данные на диске +- не отличить от оригинала командой ls +- удаление одного имени не удаляет данные + (данные удаляются когда счётчик ссылок = 0) +- нельзя создать на директорию +- нельзя создать на другой раздел/диске`) + + utils.Println(utils.ColorBold + "Символические ссылки (soft links / symlinks):" + utils.ColorReset) + utils.Code(`Символическая ссылка — файл, содержащий путь к цели. + +ln -s /etc/nginx/nginx.conf nginx.conf # создать симлинк +ln -s /path/to/dir mylink # симлинк на директорию +ls -la nginx.conf +# lrwxrwxrwx 1 user group 20 Jan nginx.conf -> /etc/nginx/nginx.conf + +Особенности: +- показывается как l в ls -la +- может указывать на директории +- может быть "битым" (цель удалена) +- можно создать между разными разделами +- readlink nginx.conf — показать куда указывает`) + + utils.Command("stat file.txt", "показать подробную информацию о файле (inode, ссылки)") + utils.Command("ls -i file.txt", "показать номер inode") + + // ─── 09. Чтение текстовых файлов ───────────────────────────── + utils.Section("09. Чтение текстовых файлов") + + utils.Command("cat file.txt", "вывести весь файл") + utils.Command("cat -n file.txt", "с номерами строк") + utils.Command("cat -A file.txt", "показать спецсимволы ($ в конце строк)") + utils.Command("cat f1 f2 > merged", "объединить файлы") + fmt.Println() + utils.Command("less file.txt", "постраничный просмотр (рекомендуется для больших файлов)") + utils.Command("more file.txt", "постраничный просмотр (только вперёд)") + fmt.Println() + utils.Code(`Навигация в less: + Space / PgDn — следующая страница + b / PgUp — предыдущая страница + g / G — начало / конец файла + /паттерн — поиск вперёд + ?паттерн — поиск назад + n / N — следующее / предыдущее совпадение + q — выход`) + + utils.Command("head file.txt", "первые 10 строк") + utils.Command("head -n 20 file.txt", "первые 20 строк") + utils.Command("head -c 100 file.txt", "первые 100 байт") + utils.Command("tail file.txt", "последние 10 строк") + utils.Command("tail -n 30 file.txt", "последние 30 строк") + utils.Command("tail -f /var/log/syslog", "следить за файлом в реальном времени") + utils.Command("tail -F /var/log/nginx/access.log", "следить, даже если файл пересоздаётся") + fmt.Println() + utils.Command("grep 'текст' file.txt", "поиск строк содержащих 'текст'") + utils.Command("grep -i 'TEXT' file.txt", "без учёта регистра") + utils.Command("grep -r 'текст' /etc/", "рекурсивный поиск в директории") + utils.Command("grep -n 'текст' file.txt", "с номерами строк") + utils.Command("grep -v 'текст' file.txt", "строки НЕ содержащие 'текст'") + utils.Command("grep -c 'текст' file.txt", "количество совпадений") + utils.Command("grep -l 'текст' *.conf", "только имена файлов с совпадениями") + fmt.Println() + utils.Command("wc file.txt", "количество строк, слов, байт") + utils.Command("wc -l file.txt", "только строки") + utils.Command("wc -w file.txt", "только слова") + utils.Command("sort file.txt", "сортировать строки") + utils.Command("sort -r file.txt", "в обратном порядке") + utils.Command("sort -n file.txt", "числовая сортировка") + utils.Command("sort -u file.txt", "убрать дубли (unique)") + utils.Command("uniq file.txt", "убрать соседние одинаковые строки") + utils.Command("cut -d: -f1 /etc/passwd", "вырезать первое поле (разделитель :)") + utils.Command("cut -d, -f2,4 data.csv", "поля 2 и 4 из CSV") + utils.Command("tr 'a-z' 'A-Z' < file.txt", "заменить символы (нижний → верхний регистр)") + utils.Command("diff file1 file2", "сравнить два файла") + utils.Command("diff -u file1 file2", "unified-формат (как git diff)") + + // ─── 10. Текстовые редакторы ────────────────────────────────── + utils.Section("10. Текстовые редакторы: nano и vi/vim") + + utils.Println(utils.ColorBold + "nano — простой редактор:" + utils.ColorReset) + utils.Command("nano file.txt", "открыть файл в nano") + utils.Code(`Основные сочетания клавиш в nano: + Ctrl+O — сохранить (Write Out) + Ctrl+X — выйти + Ctrl+K — вырезать строку + Ctrl+U — вставить + Ctrl+W — поиск + Ctrl+\ — замена + Ctrl+G — справка + Alt+U — отменить (undo)`) + + utils.Println(utils.ColorBold + "vi / vim — мощный редактор:" + utils.ColorReset) + utils.Command("vi file.txt", "открыть в vi") + utils.Command("vim file.txt", "открыть в vim (улучшенный vi)") + fmt.Println() + utils.Code(`Режимы vim: + Нормальный (Normal) — навигация, команды. По умолчанию. + Вставки (Insert) — ввод текста. Нажать i. + Командный (Command) — команды (:). Нажать : + Визуальный (Visual) — выделение. Нажать v. + +Переключение: + i — режим вставки перед курсором + a — режим вставки после курсора + o — новая строка ниже, режим вставки + O — новая строка выше, режим вставки + Esc — вернуться в нормальный режим`) + + utils.Code(`Навигация (нормальный режим): + h j k l — ← ↓ ↑ → + w / b — следующее / предыдущее слово + 0 / $ — начало / конец строки + gg / G — начало / конец файла + :n — перейти на строку n + Ctrl+F/B — вперёд / назад на страницу + +Редактирование: + dd — удалить строку + yy — скопировать строку (yank) + p — вставить после курсора + P — вставить перед курсором + u — отменить (undo) + Ctrl+R — повторить (redo) + /текст — поиск вперёд + n / N — следующее / предыдущее совпадение + :%s/old/new/g — заменить все вхождения + +Сохранение и выход: + :w — сохранить + :q — выйти + :wq или ZZ — сохранить и выйти + :q! — выйти без сохранения + :wq! — принудительно сохранить и выйти`) + + utils.Note("Если застряли в vi — нажмите Esc несколько раз, затем :q! для выхода без сохранения.") + utils.Note("vimtutor — встроенный интерактивный учебник по vim (30 мин). Запустите в терминале.") + + utils.Footer() +} diff --git a/modules/linuxmodules/linux_intro.go b/modules/linuxmodules/linux_intro.go new file mode 100644 index 0000000..78832f0 --- /dev/null +++ b/modules/linuxmodules/linux_intro.go @@ -0,0 +1,161 @@ +package linuxmodules + +import ( + "fmt" + "rubric/utils" +) + +var IntroModule = Module{ + Key: "intro", + Aliases: []string{"i", "os", "начало"}, + Title: "Введение. ОС и GNU/Linux", + Description: "Темы 01, 04, 05: операционные системы, файловые системы, терминал", + Run: showIntro, +} + +func showIntro() { + utils.Header("Linux — Введение. ОС и GNU/Linux") + + // ─── 01. Операционные системы и GNU/Linux ───────────────────── + utils.Section("01. Операционные системы и GNU/Linux") + + utils.Println("Операционная система (ОС) — программа, управляющая аппаратурой и") + utils.Println("предоставляющая среду для работы прикладных программ.") + fmt.Println() + utils.Println(utils.ColorBold + "Ключевые понятия:" + utils.ColorReset) + utils.Code(`Ядро (kernel) — центральная часть ОС, управляет памятью, + процессами, устройствами. +Userspace — пространство пользователя, где работают + обычные программы. +Дистрибутив — ядро Linux + набор программ + система управления + пакетами (Debian, Ubuntu, RHEL, Fedora, Arch...).`) + + utils.Println(utils.ColorBold + "История:" + utils.ColorReset) + utils.Code(`1969 — AT&T Bell Labs: UNIX (Ричи, Томпсон) +1983 — Ричард Столлман: проект GNU (свободное ПО) +1991 — Линус Торвальдс: ядро Linux (v0.01) + = GNU/Linux: ядро Linux + утилиты GNU +POSIX — стандарт совместимости UNIX-подобных систем`) + + utils.Println(utils.ColorBold + "GNU/Linux vs другие ОС:" + utils.ColorReset) + utils.Code(`Linux Windows macOS +───────────────────────────────────────────── +Открытый код Закрытый Частично открытый +Бесплатно Платный Платный (только на Mac) +Пакетный менеджер Магазин/exe App Store/Homebrew +Множество дистро Одна система Одна система +Сильный CLI GUI-ориентирован CLI через zsh/bash`) + + utils.Note("Серверы: >90% работают на Linux. Android — ядро Linux. Суперкомпьютеры: 100% Linux.") + utils.Note("RHEL (Red Hat Enterprise Linux) — коммерческий дистрибутив; RHCSA — его сертификация.") + + // ─── 04. О файловых системах ────────────────────────────────── + utils.Section("04. О файловых системах") + + utils.Println("Файловая система (ФС) — способ организации хранения данных на диске.") + fmt.Println() + utils.Println(utils.ColorBold + "Популярные файловые системы Linux:" + utils.ColorReset) + utils.Code(`ext4 — стандарт для большинства дистрибутивов, + журналирование, поддержка файлов до 16 ТБ +xfs — высокая производительность, RHEL по умолчанию, + хорошо для больших файлов +btrfs — Copy-on-Write, снапшоты, сжатие +vfat — совместимость с Windows (флешки, EFI-раздел) +ntfs — чтение/запись Windows-разделов (ntfs-3g) +tmpfs — виртуальная ФС в оперативной памяти (/tmp, /run) +proc — виртуальная ФС, информация о процессах (/proc) +sysfs — виртуальная ФС, информация об устройствах (/sys)`) + + utils.Println(utils.ColorBold + "Структура файловой системы Linux (FHS):" + utils.ColorReset) + utils.Code(`/ — корень, начало всего дерева +├── bin/ — основные бинарные файлы (ls, cp, mv...) +├── sbin/ — системные бинарники (root: fdisk, mount...) +├── etc/ — конфигурационные файлы +├── home/ — домашние директории пользователей +├── root/ — домашняя директория root +├── var/ — изменяемые данные (логи, кэш, БД) +├── tmp/ — временные файлы (очищается при перезагрузке) +├── usr/ — пользовательские программы и данные +│ ├── bin/ — программы пользователя +│ ├── lib/ — библиотеки +│ └── share/ — разделяемые данные +├── lib/ — системные библиотеки +├── dev/ — файлы устройств (sda, tty, null...) +├── proc/ — виртуальная ФС: инфо о процессах и ядре +├── sys/ — виртуальная ФС: инфо об устройствах +├── run/ — данные запущенных процессов (PID-файлы) +├── boot/ — загрузчик, ядро (vmlinuz, initrd) +├── mnt/ — точки монтирования (временные) +└── media/ — автомонтирование съёмных носителей`) + + utils.Note("В Linux всё — файл: устройства, сокеты, каналы, процессы.") + utils.Note("Нет буквы диска (C:, D:). Всё монтируется в единое дерево с корнем /") + + utils.Println(utils.ColorBold + "Типы файлов:" + utils.ColorReset) + utils.Code(`- обычный файл (ls показывает -) +d директория (ls показывает d) +l символическая ссылка (ls показывает l) +b блочное устройство (/dev/sda) +c символьное устройство (/dev/tty) +p именованный канал (FIFO) +s сокет`) + + // ─── 05. Текстовый интерфейс пользователя ──────────────────── + utils.Section("05. Текстовый интерфейс пользователя (CLI)") + + utils.Println("Shell (оболочка) — интерпретатор команд между пользователем и ядром.") + fmt.Println() + utils.Println(utils.ColorBold + "Оболочки:" + utils.ColorReset) + utils.Code(`bash — Bourne Again Shell, стандарт в большинстве дистро +zsh — расширенный bash, Oh My Zsh, популярен у разработчиков +sh — POSIX sh (минималистичный, для скриптов) +fish — дружелюбный, автодополнение из коробки`) + + utils.Println(utils.ColorBold + "Приглашение командной строки (prompt):" + utils.ColorReset) + utils.Code(`user@hostname:~$ — обычный пользователь +root@hostname:~# — суперпользователь (root) + +user — имя пользователя +hostname — имя машины +~ — текущая директория (~ = домашняя) +$ — не root; # — root`) + + utils.Println(utils.ColorBold + "Базовые горячие клавиши:" + utils.ColorReset) + utils.Code(`Tab — автодополнение команд и путей +Tab Tab — показать все варианты +↑ / ↓ — история команд +Ctrl+C — прервать текущую команду (SIGINT) +Ctrl+Z — приостановить процесс (SIGTSTP) +Ctrl+D — закрыть сессию / конец ввода (EOF) +Ctrl+L — очистить экран (= clear) +Ctrl+A — в начало строки +Ctrl+E — в конец строки +Ctrl+R — поиск по истории команд +Ctrl+U — удалить строку до курсора +Ctrl+W — удалить слово влево`) + + utils.Println(utils.ColorBold + "Полезные команды общего назначения:" + utils.ColorReset) + utils.Command("man команда", "страница руководства (q — выход, /текст — поиск)") + utils.Command("info команда", "расширенная документация GNU") + utils.Command("команда --help", "краткая справка") + utils.Command("type команда", "что такое команда (alias/builtin/файл)") + utils.Command("which команда", "полный путь к исполняемому файлу") + utils.Command("whereis команда", "бинарник, исходник и man-страница") + utils.Command("history", "история команд") + utils.Command("history 20", "последние 20 команд") + utils.Command("!42", "выполнить команду №42 из истории") + utils.Command("!!", "повторить последнюю команду") + utils.Command("clear", "очистить экран") + utils.Command("exit", "выйти из сессии") + utils.Command("echo $SHELL", "какая оболочка используется") + fmt.Println() + utils.Code(`# Запуск нескольких команд: +cmd1 ; cmd2 — выполнить последовательно (всегда) +cmd1 && cmd2 — cmd2 только если cmd1 успешна +cmd1 || cmd2 — cmd2 только если cmd1 неуспешна +cmd1 | cmd2 — передать вывод cmd1 на вход cmd2 (pipe)`) + + utils.Note("Виртуальные консоли: Alt+F1..F6 в Linux. В X11 — Ctrl+Alt+F1..F6. Вернуться: Ctrl+Alt+F7.") + + utils.Footer() +} diff --git a/modules/linuxmodules/linux_kernel.go b/modules/linuxmodules/linux_kernel.go new file mode 100644 index 0000000..b072b60 --- /dev/null +++ b/modules/linuxmodules/linux_kernel.go @@ -0,0 +1,109 @@ +package linuxmodules + +import ( + "rubric/utils" +) + +var KernelModule = Module{ + Key: "kernel", + Aliases: []string{"k", "ядро"}, + Title: "Ядро Linux", + Description: "Тема 21: ядро, модули, параметры, uname, dmesg", + Run: showKernel, +} + +func showKernel() { + utils.Header("Linux — Ядро (Kernel)") + + utils.Section("21. Ядро Linux") + + utils.Println("Ядро (kernel) — центральная часть ОС. Управляет:") + utils.Println("• процессами и планировщиком CPU") + utils.Println("• памятью (виртуальная память, swap)") + utils.Println("• устройствами (через драйверы)") + utils.Println("• файловыми системами") + utils.Println("• сетью") + utils.Println("• системными вызовами (syscalls)") + + utils.Println(utils.ColorBold + "\nИнформация о ядре:" + utils.ColorReset) + utils.Command("uname -r", "версия ядра") + utils.Command("uname -a", "полная информация (ядро, архитектура, дата)") + utils.Command("uname -m", "архитектура (x86_64, aarch64...)") + utils.Command("cat /proc/version", "подробная версия (компилятор, дата)") + utils.Command("cat /proc/sys/kernel/osrelease", "версия через /proc") + utils.Code(`# Пример uname -a: +Linux server01 5.15.0-91-generic #101-Ubuntu SMP Tue Nov 14 13:30:08 UTC 2023 +x86_64 x86_64 x86_64 GNU/Linux +│ │ │ └ платформа +│ │ └── архитектура процессора +│ └── имя хоста +└── имя ядра + +# Версия ядра: 5.15.0-91-generic +# 5.15 — основная версия +# 0 — патч-уровень +# 91 — номер пакета дистрибутива`) + + utils.Println(utils.ColorBold + "dmesg — буфер сообщений ядра:" + utils.ColorReset) + utils.Command("dmesg", "все сообщения ядра") + utils.Command("dmesg | tail -20", "последние 20 сообщений") + utils.Command("dmesg -T", "с человекочитаемыми временными метками") + utils.Command("dmesg | grep -i error", "только ошибки") + utils.Command("dmesg | grep -i usb", "сообщения о USB-устройствах") + utils.Command("dmesg | grep -i sda", "сообщения о диске sda") + utils.Command("dmesg -w", "следить за новыми сообщениями (как tail -f)") + utils.Command("dmesg -l err,crit", "только критические ошибки") + + utils.Println(utils.ColorBold + "\nМодули ядра:" + utils.ColorReset) + utils.Println("Модуль — расширение ядра, загружаемое динамически (драйверы, ФС...).") + utils.Code(`# Управление модулями: +lsmod # список загруженных модулей +lsmod | grep ext4 # есть ли модуль ext4? +modinfo ext4 # информация о модуле +modprobe ext4 # загрузить модуль (с зависимостями) +modprobe -r ext4 # выгрузить модуль +insmod /path/to/mod.ko # загрузить .ko файл напрямую +rmmod ext4 # выгрузить модуль + +# Автоматическая загрузка при старте: +# /etc/modules (Debian/Ubuntu) +# /etc/modules-load.d/*.conf +echo "br_netfilter" > /etc/modules-load.d/k8s.conf + +# Параметры модулей: +# /etc/modprobe.d/*.conf +echo "options kvm_intel nested=1" > /etc/modprobe.d/kvm.conf`) + + utils.Println(utils.ColorBold + "Параметры ядра (sysctl):" + utils.ColorReset) + utils.Code(`# Просмотр параметров: +sysctl -a # все параметры +sysctl net.ipv4.ip_forward # конкретный параметр +cat /proc/sys/net/ipv4/ip_forward # то же через /proc/sys + +# Изменить параметр (временно): +sysctl -w net.ipv4.ip_forward=1 + +# Постоянно — в /etc/sysctl.conf или /etc/sysctl.d/: +echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.d/99-custom.conf +sysctl -p /etc/sysctl.d/99-custom.conf # применить + +# Полезные параметры: +net.ipv4.ip_forward = 1 # маршрутизация (для Docker/Kubernetes) +net.ipv4.tcp_syncookies = 1 # защита от SYN flood +vm.swappiness = 10 # предпочитать RAM над swap +fs.file-max = 2097152 # максимум открытых файлов +kernel.dmesg_restrict = 0 # dmesg без root`) + + utils.Println(utils.ColorBold + "Аппаратная информация:" + utils.ColorReset) + utils.Command("lscpu", "информация о процессоре") + utils.Command("lsmem", "информация о памяти") + utils.Command("lspci", "устройства на шине PCI") + utils.Command("lspci -v", "подробно") + utils.Command("lsusb", "USB-устройства") + utils.Command("lsblk", "блочные устройства (диски)") + utils.Command("lshw", "полная информация об оборудовании (нужен root)") + utils.Command("dmidecode", "данные BIOS/UEFI (тип памяти, серийный номер...)") + utils.Command("inxi -Fz", "обзор системы (нужно установить)") + + utils.Footer() +} diff --git a/modules/linuxmodules/linux_logs.go b/modules/linuxmodules/linux_logs.go new file mode 100644 index 0000000..01130fe --- /dev/null +++ b/modules/linuxmodules/linux_logs.go @@ -0,0 +1,175 @@ +package linuxmodules + +import ( + "rubric/utils" +) + +var LogsModule = Module{ + Key: "logs", + Aliases: []string{"l", "cron", "логи"}, + Title: "Логирование и планировщики", + Description: "Темы 36–37: rsyslog, journald, cron, at", + Run: showLogs, +} + +func showLogs() { + utils.Header("Linux — Логирование и планировщики задач") + + // ─── 36. Логирование ────────────────────────────────────────── + utils.Section("36. Логирование") + + utils.Println("В современных системах логирование — двухуровневое:") + utils.Println("journald (systemd) + rsyslog/syslog (традиционный)") + + utils.Println(utils.ColorBold + "\nОсновные лог-файлы в /var/log/:" + utils.ColorReset) + utils.Code(`/var/log/syslog — общий системный лог (Debian/Ubuntu) +/var/log/messages — общий системный лог (RHEL/Fedora) +/var/log/auth.log — аутентификация, sudo, ssh (Debian) +/var/log/secure — аутентификация (RHEL) +/var/log/kern.log — сообщения ядра +/var/log/dmesg — сообщения при загрузке +/var/log/boot.log — процесс загрузки +/var/log/cron — задания cron +/var/log/mail.log — почтовый сервер +/var/log/nginx/ — access.log, error.log +/var/log/apache2/ — access.log, error.log +/var/log/mysql/ — error.log +/var/log/dpkg.log — установка пакетов (Debian) +/var/log/dnf.log — установка пакетов (RHEL) +/var/log/wtmp — история входов (last для чтения) +/var/log/btmp — неудачные попытки входа (lastb) +/var/log/lastlog — последний вход каждого пользователя`) + + utils.Println(utils.ColorBold + "Работа с логами:" + utils.ColorReset) + utils.Command("tail -f /var/log/syslog", "следить за системным логом") + utils.Command("tail -n 100 /var/log/auth.log", "последние 100 строк лога входов") + utils.Command("grep 'ERROR' /var/log/nginx/error.log", "ошибки nginx") + utils.Command("grep -i 'failed' /var/log/auth.log", "неудачные входы") + utils.Command("zcat /var/log/syslog.1.gz", "читать сжатый архивный лог") + utils.Command("zgrep 'error' /var/log/syslog.*.gz", "поиск в архивных логах") + utils.Command("last", "история входов в систему") + utils.Command("lastb", "неудачные попытки входа (root)") + utils.Command("lastlog", "последний вход каждого пользователя") + + utils.Println(utils.ColorBold + "\nrsyslog — конфигурация:" + utils.ColorReset) + utils.Code(`# Конфиг: /etc/rsyslog.conf и /etc/rsyslog.d/*.conf +# Формат правил: facility.priority назначение + +# Facility (источник): +auth, authpriv — аутентификация +cron — планировщик +daemon — системные демоны +kern — ядро +mail — почта +user — пользовательские программы +local0..local7 — зарезервированы для своего использования +* — все + +# Priority (уровень, по возрастанию важности): +debug, info, notice, warning, err, crit, alert, emerg + +# Примеры правил: +*.info;mail.none;authpriv.none /var/log/messages # всё кроме mail и auth +authpriv.* /var/log/secure # всё от authpriv +mail.* /var/log/maillog # почта +cron.* /var/log/cron # cron +*.emerg :omusrmsg:* # критичное — всем пользователям +local1.* /var/log/myapp.log # своё приложение + +# Перезапустить rsyslog: +sudo systemctl restart rsyslog`) + + utils.Println(utils.ColorBold + "logrotate — ротация логов:" + utils.ColorReset) + utils.Code(`# Конфиг: /etc/logrotate.conf и /etc/logrotate.d/* +# Пример /etc/logrotate.d/nginx: +/var/log/nginx/*.log { + daily # каждый день + missingok # не ошибаться если файл отсутствует + rotate 14 # хранить 14 архивов + compress # сжимать gzip + delaycompress # не сжимать текущий архив + notifempty # не ротировать пустые файлы + create 0640 nginx adm # создать новый файл с правами + sharedscripts + postrotate + nginx -s reopen # сообщить nginx открыть новый файл + endscript +} + +# Ручная ротация (тест): +sudo logrotate -d /etc/logrotate.d/nginx # -d = dry run`) + + // ─── 37. Планировщики ───────────────────────────────────────── + utils.Section("37. Планировщики задач: cron и at") + + utils.Println(utils.ColorBold + "cron — периодические задачи:" + utils.ColorReset) + utils.Code(`# Редактировать crontab текущего пользователя: +crontab -e + +# Посмотреть: +crontab -l + +# Удалить все задачи: +crontab -r + +# Для root: +sudo crontab -e + +# Формат строки crontab: +# мин час день_месяца месяц день_недели команда +# 0-59 0-23 1-31 1-12 0-7(0,7=воскресенье) + +# Примеры: +* * * * * /script.sh # каждую минуту +0 * * * * /script.sh # каждый час в 0 минут +0 2 * * * /backup.sh # каждый день в 02:00 +0 2 * * 0 /weekly.sh # каждое воскресенье в 02:00 +0 2 1 * * /monthly.sh # 1-го числа каждого месяца +*/5 * * * * /check.sh # каждые 5 минут +0 9-17 * * 1-5 /work.sh # по будням с 9 до 17 +0 2 * * * root /root/backup.sh # в /etc/crontab с указанием пользователя + +# Специальные строки: +@reboot /script.sh # при каждой загрузке +@daily /script.sh # раз в день (= 0 0 * * *) +@weekly /script.sh # раз в неделю +@monthly /script.sh # раз в месяц +@yearly /script.sh # раз в год`) + + utils.Println(utils.ColorBold + "Системные cron-директории:" + utils.ColorReset) + utils.Code(`/etc/crontab — системный crontab (с полем user) +/etc/cron.d/ — отдельные файлы crontab +/etc/cron.hourly/ — скрипты, запускаемые каждый час +/etc/cron.daily/ — каждый день +/etc/cron.weekly/ — каждую неделю +/etc/cron.monthly/ — каждый месяц + +# Поместить скрипт в /etc/cron.daily/: +sudo cp backup.sh /etc/cron.daily/ +sudo chmod +x /etc/cron.daily/backup.sh`) + + utils.Println(utils.ColorBold + "at — однократные задачи:" + utils.ColorReset) + utils.Code(`# Выполнить команду однократно в указанное время: +at 14:30 # в 14:30 сегодня +at 14:30 tomorrow # завтра в 14:30 +at 14:30 July 15 # 15 июля +at now + 1 hour # через час +at now + 30 minutes # через 30 минут + +# Ввод команд (Ctrl+D для завершения): +at 02:00 +> /usr/local/bin/backup.sh +> Ctrl+D + +# Список задач: +atq +at -l + +# Удалить задачу: +atrm 5 # удалить задачу №5 + +# Посмотреть содержимое задачи: +at -c 5`) + + utils.Footer() +} diff --git a/modules/linuxmodules/linux_netfs.go b/modules/linuxmodules/linux_netfs.go new file mode 100644 index 0000000..3598def --- /dev/null +++ b/modules/linuxmodules/linux_netfs.go @@ -0,0 +1,346 @@ +package linuxmodules + +import ( + "fmt" + "rubric/utils" +) + +var NetfsModule = Module{ + Key: "netfs", + Aliases: []string{"nfs", "smb", "samba", "autofs", "сетевые-фс"}, + Title: "Сетевые файловые системы", + Description: "Темы 55–59: IPv6, передача файлов, NFS, SMB/Samba, autofs", + Run: showNetfs, +} + +func showNetfs() { + utils.Header("Linux — Сетевые файловые системы") + + // ─── 55. IPv6 ───────────────────────────────────────────────── + utils.Section("55. Работа с IPv6") + + utils.Println("IPv6 — протокол интернета следующего поколения (128-битные адреса).") + fmt.Println() + utils.Println(utils.ColorBold + "Формат IPv6 адресов:" + utils.ColorReset) + utils.Code(`Формат: 8 групп по 4 hex-цифры, разделённых : +2001:0db8:85a3:0000:0000:8a2e:0370:7334 + +Сокращения: +- Ведущие нули в группе можно опустить: 0db8 → db8 +- Одну последовательность групп из нулей → :: +2001:db8::1 (полный: 2001:0db8:0000:0000:0000:0000:0000:0001) +::1 — loopback (аналог 127.0.0.1) +fe80::/10 — link-local (автоконфигурация в подсети) +fd00::/8 — уникальные локальные (аналог 192.168.x.x) +2000::/3 — глобальные unicast (публичные) + +Длина префикса: 2001:db8::/32 (аналог маски подсети)`) + + utils.Println(utils.ColorBold + "Настройка IPv6 через nmcli:" + utils.ColorReset) + utils.Code(`# Статический IPv6: +nmcli con mod eth0 ipv6.addresses "2001:db8::10/64" +nmcli con mod eth0 ipv6.gateway "2001:db8::1" +nmcli con mod eth0 ipv6.method manual +nmcli con up eth0 + +# SLAAC (автоконфигурация): +nmcli con mod eth0 ipv6.method auto + +# DHCPv6: +nmcli con mod eth0 ipv6.method dhcp + +# Отключить IPv6 для интерфейса: +nmcli con mod eth0 ipv6.method disabled`) + + utils.Println(utils.ColorBold + "IPv6 команды:" + utils.ColorReset) + utils.Command("ip -6 addr", "IPv6 адреса интерфейсов") + utils.Command("ip -6 route", "IPv6 таблица маршрутов") + utils.Command("ping6 ::1", "ping loopback IPv6") + utils.Command("ping6 fe80::1%eth0", "ping link-local с указанием интерфейса") + utils.Command("traceroute6 2001:4860:4860::8888", "traceroute IPv6") + utils.Command("ss -6 -tuln", "IPv6 порты") + utils.Command("dig AAAA google.com", "DNS AAAA запись (IPv6)") + + // ─── 56. Передача файлов по сети ───────────────────────────── + utils.Section("56. Передача файлов по сети") + + utils.Println(utils.ColorBold + "SCP — копирование через SSH:" + utils.ColorReset) + utils.Code(`# Скопировать локальный файл на сервер: +scp file.txt user@server:/path/to/dest/ + +# Скопировать с сервера на локальную машину: +scp user@server:/path/file.txt /local/path/ + +# Директорию рекурсивно: +scp -r mydir/ user@server:/tmp/ + +# Нестандартный порт: +scp -P 2222 file.txt user@server:/tmp/ + +# С указанием ключа: +scp -i ~/.ssh/mykey file.txt user@server:/tmp/ + +# Между двумя серверами: +scp user1@server1:/path/file.txt user2@server2:/path/`) + + utils.Println(utils.ColorBold + "SFTP — интерактивная передача файлов:" + utils.ColorReset) + utils.Code(`# Подключиться: +sftp user@server +sftp -P 2222 user@server + +# Команды в интерактивном режиме: +ls — список файлов на сервере +lls — список файлов локально +pwd — директория на сервере +lpwd — локальная директория +cd /remote/path — перейти на сервере +lcd /local/path — перейти локально +get file.txt — скачать файл +get -r dir/ — скачать директорию +put file.txt — загрузить файл +put -r dir/ — загрузить директорию +rm file.txt — удалить на сервере +mkdir newdir — создать директорию на сервере +exit / quit — выйти`) + + utils.Println(utils.ColorBold + "rsync — эффективная синхронизация:" + utils.ColorReset) + utils.Code(`# rsync передаёт только изменения — быстрее scp для больших объёмов. + +# Синхронизировать локально: +rsync -av /source/ /dest/ + +# Синхронизировать на удалённый сервер: +rsync -avz /local/data/ user@server:/remote/data/ + +# С сервера локально: +rsync -avz user@server:/remote/data/ /local/data/ + +# Ключи: +# -a — архивный режим (сохраняет права, время, симлинки) +# -v — verbose +# -z — сжатие при передаче +# -P — прогресс + продолжение прерванной передачи +# --delete — удалять файлы которых нет в источнике +# --exclude='*.log' — исключить паттерн +# -n / --dry-run — симуляция (что будет скопировано) +# -e "ssh -p 2222" — нестандартный порт SSH + +# Зеркалирование с исключениями: +rsync -avz --delete \ + --exclude='.git/' \ + --exclude='node_modules/' \ + /project/ user@server:/var/www/project/`) + + // ─── 57. NFS ────────────────────────────────────────────────── + utils.Section("57. Сетевые файловые системы — NFS") + + utils.Println("NFS (Network File System) — монтирование директорий с удалённых серверов.") + utils.Println("Прозрачно для приложений: работает как обычная локальная ФС.") + fmt.Println() + utils.Println(utils.ColorBold + "Сервер NFS — настройка экспорта:" + utils.ColorReset) + utils.Code(`# Установка: +dnf install nfs-utils # RHEL/Fedora +apt install nfs-kernel-server # Debian/Ubuntu + +# Включить и запустить: +systemctl enable --now nfs-server # RHEL +systemctl enable --now nfs-kernel-server # Ubuntu + +# Настройка экспортов /etc/exports: +# директория клиент(опции) +/shared 192.168.1.0/24(rw,sync,no_root_squash) +/data *(ro,sync) # всем только чтение +/home/alice server2(rw,sync,no_subtree_check) + +# Опции: +# rw — чтение и запись +# ro — только чтение +# sync — синхронная запись (безопасно) +# async — асинхронная (быстрее, риск потери) +# no_root_squash — root клиента = root сервера +# root_squash — root клиента → nobody (безопаснее, по умолчанию) +# no_subtree_check — не проверять поддерево (производительность) + +# Применить изменения: +exportfs -r # перечитать /etc/exports +exportfs -v # показать активные экспорты +exportfs -a # экспортировать всё из /etc/exports`) + + utils.Println(utils.ColorBold + "Firewall для NFS:" + utils.ColorReset) + utils.Code(`firewall-cmd --permanent --add-service=nfs +firewall-cmd --permanent --add-service=rpc-bind +firewall-cmd --permanent --add-service=mountd +firewall-cmd --reload`) + + utils.Println(utils.ColorBold + "Клиент NFS — монтирование:" + utils.ColorReset) + utils.Code(`# Установка клиента: +dnf install nfs-utils +apt install nfs-common + +# Посмотреть экспорты сервера: +showmount -e 192.168.1.10 + +# Смонтировать: +mount -t nfs 192.168.1.10:/shared /mnt/shared +mount -t nfs4 192.168.1.10:/data /mnt/data # NFSv4 + +# Параметры монтирования: +mount -t nfs -o rw,sync,hard,intr 192.168.1.10:/shared /mnt + +# В /etc/fstab (постоянно): +192.168.1.10:/shared /mnt/shared nfs defaults,_netdev 0 0 +# _netdev — монтировать только после настройки сети + +# Размонтировать: +umount /mnt/shared`) + + // ─── 58. SMB/Samba ──────────────────────────────────────────── + utils.Section("58. Сетевые файловые системы — SMB/Samba") + + utils.Println("SMB (Server Message Block) / CIFS — протокол файлового обмена Windows.") + utils.Println("Samba — реализация SMB на Linux. Позволяет обмениваться файлами с Windows.") + fmt.Println() + utils.Println(utils.ColorBold + "Сервер Samba — установка и настройка:" + utils.ColorReset) + utils.Code(`# Установка: +dnf install samba samba-client # RHEL +apt install samba # Ubuntu + +# Включить и запустить: +systemctl enable --now smb nmb # RHEL +systemctl enable --now smbd nmbd # Ubuntu`) + + utils.Println(utils.ColorBold + "Конфигурация /etc/samba/smb.conf:" + utils.ColorReset) + utils.Code(`[global] + workgroup = WORKGROUP # рабочая группа Windows + server string = Samba Server + security = user # аутентификация по пользователю + passdb backend = tdbsam # база паролей + +# Публичная шара (без пароля): +[public] + path = /srv/samba/public + browseable = yes + writable = yes + guest ok = yes + create mask = 0664 + directory mask = 0775 + +# Приватная шара (с паролем): +[private] + path = /srv/samba/private + valid users = alice bob + writable = yes + browseable = no + create mask = 0660`) + + utils.Println(utils.ColorBold + "Управление пользователями Samba:" + utils.ColorReset) + utils.Code(`# Пользователь Samba должен существовать в Linux: +useradd -s /sbin/nologin alice + +# Добавить пользователя в Samba (отдельный пароль!): +smbpasswd -a alice +smbpasswd -e alice # включить +smbpasswd -d alice # отключить +smbpasswd -x alice # удалить + +# Список пользователей Samba: +pdbedit -L`) + + utils.Println(utils.ColorBold + "SELinux + Samba:" + utils.ColorReset) + utils.Code(`# Разрешить Samba доступ к домашним директориям: +setsebool -P samba_enable_home_dirs on + +# Разрешить Samba читать/писать общие директории: +chcon -t samba_share_t /srv/samba/public +semanage fcontext -a -t samba_share_t '/srv/samba(/.*)?' +restorecon -Rv /srv/samba/`) + + utils.Println(utils.ColorBold + "Firewall для Samba:" + utils.ColorReset) + utils.Code(`firewall-cmd --permanent --add-service=samba +firewall-cmd --reload`) + + utils.Println(utils.ColorBold + "Клиент SMB — монтирование Windows-шары:" + utils.ColorReset) + utils.Code(`# Установка: +dnf install cifs-utils samba-client +apt install cifs-utils smbclient + +# Просмотр шар на сервере: +smbclient -L //192.168.1.20 -U alice + +# Интерактивный клиент: +smbclient //192.168.1.20/shared -U alice + +# Монтирование: +mount -t cifs //192.168.1.20/shared /mnt/windows \ + -o username=alice,password=secret + +# С файлом учётных данных (безопаснее): +cat > /etc/samba/creds << 'EOF' +username=alice +password=secret +domain=WORKGROUP +EOF +chmod 600 /etc/samba/creds + +mount -t cifs //192.168.1.20/shared /mnt/windows \ + -o credentials=/etc/samba/creds + +# В /etc/fstab: +//server/shared /mnt/windows cifs credentials=/etc/samba/creds,_netdev 0 0`) + + // ─── 59. Autofs ─────────────────────────────────────────────── + utils.Section("59. Автоматическое монтирование — Autofs") + + utils.Println("Autofs — демон автоматического монтирования сетевых ФС по запросу.") + utils.Println("Монтирует при обращении к директории, размонтирует при простое.") + fmt.Println() + utils.Println(utils.ColorBold + "Установка и запуск:" + utils.ColorReset) + utils.Code(`dnf install autofs # RHEL +apt install autofs # Ubuntu + +systemctl enable --now autofs`) + + utils.Println(utils.ColorBold + "Конфигурация autofs:" + utils.ColorReset) + utils.Code(`# Главный файл /etc/auto.master: +# точка_монтирования файл_карты [опции] +/mnt/nfs /etc/auto.nfs --timeout=60 +/home /etc/auto.home --timeout=300 +/- /etc/auto.direct + +# /etc/auto.nfs — монтирование NFS: +# ключ опции сервер:путь +shared -rw,sync 192.168.1.10:/shared +data -ro 192.168.1.10:/data +# Обращение: ls /mnt/nfs/shared → автоматически монтируется + +# /etc/auto.home — домашние директории через NFS: +* -rw,sync 192.168.1.10:/home/& +# & → подставляется ключ (* = любой пользователь) +# /home/alice → монтируется 192.168.1.10:/home/alice + +# /etc/auto.direct — прямые точки монтирования: +/srv/data -rw,sync 192.168.1.10:/data + +# Применить изменения: +systemctl reload autofs +# или: +automount -v`) + + utils.Println(utils.ColorBold + "Использование с FreeIPA/LDAP:" + utils.ColorReset) + utils.Code(`# FreeIPA хранит карты autofs в LDAP. +# После настройки sssd + ipa-client autofs +# получает карты автоматически. + +# Подключить autofs к SSSD: +# В /etc/sssd/sssd.conf: +[domain/ipa.example.com] +autofs_provider = ipa + +# Перезапустить: +systemctl restart sssd autofs`) + + utils.Note("Autofs удобен для сотен пользователей: их домашние директории монтируются автоматически при входе.") + utils.Note("--timeout=60 означает размонтировать после 60 секунд бездействия.") + + utils.Footer() +} diff --git a/modules/linuxmodules/linux_network.go b/modules/linuxmodules/linux_network.go new file mode 100644 index 0000000..c0464e1 --- /dev/null +++ b/modules/linuxmodules/linux_network.go @@ -0,0 +1,238 @@ +package linuxmodules + +import ( + "fmt" + "rubric/utils" +) + +var NetworkModule = Module{ + Key: "network", + Aliases: []string{"net", "ssh", "сеть"}, + Title: "Сети и SSH", + Description: "Темы 42–44: основы сетей, настройка, SSH", + Run: showNetwork, +} + +func showNetwork() { + utils.Header("Linux — Сети и SSH") + + // ─── 42. Основы сетей ───────────────────────────────────────── + utils.Section("42. Основы сетей") + + utils.Println(utils.ColorBold + "Ключевые понятия:" + utils.ColorReset) + utils.Code(`IP-адрес — уникальный адрес устройства в сети + IPv4: 192.168.1.10 (4 байта, 0-255) + IPv6: 2001:db8::1 (16 байт, hex) +Маска сети — определяет границу сети и хостов + /24 = 255.255.255.0 (256 адресов, 254 хоста) + /16 = 255.255.0.0 (65536 адресов) +Шлюз — маршрутизатор для выхода за пределы сети +DNS — перевод имён в IP (8.8.8.8 = Google DNS) +MAC-адрес — физический адрес сетевого интерфейса +DHCP — автоматическое получение IP от сервера + +Приватные сети (RFC 1918): + 10.0.0.0/8 (10.x.x.x) + 172.16.0.0/12 (172.16-31.x.x) + 192.168.0.0/16 (192.168.x.x) + +Localhost: + 127.0.0.1 — loopback IPv4 (lo) + ::1 — loopback IPv6`) + + utils.Println(utils.ColorBold + "Информация о сетевых интерфейсах:" + utils.ColorReset) + utils.Command("ip addr", "IP-адреса всех интерфейсов") + utils.Command("ip addr show eth0", "конкретный интерфейс") + utils.Command("ip link", "состояние интерфейсов (UP/DOWN)") + utils.Command("ip route", "таблица маршрутизации") + utils.Command("ip route show default", "шлюз по умолчанию") + utils.Command("ip neigh", "ARP-таблица (MAC → IP)") + fmt.Println() + utils.Code(`# Старые команды (net-tools, устаревшие): +ifconfig # → ip addr +route -n # → ip route +netstat -rn # → ip route +arp -n # → ip neigh`) + + utils.Println(utils.ColorBold + "Диагностика сети:" + utils.ColorReset) + utils.Command("ping 8.8.8.8", "проверить доступность хоста") + utils.Command("ping -c 4 google.com", "4 пакета") + utils.Command("ping6 ::1", "ping для IPv6") + utils.Command("traceroute google.com", "маршрут до хоста") + utils.Command("tracepath google.com", "маршрут (без root)") + utils.Command("mtr google.com", "ping + traceroute в реальном времени") + utils.Command("nslookup google.com", "DNS-запрос") + utils.Command("dig google.com", "подробный DNS-запрос") + utils.Command("dig @8.8.8.8 google.com", "DNS через конкретный сервер") + utils.Command("host google.com", "быстрый DNS-запрос") + utils.Command("whois 192.168.1.1", "информация об IP/домене") + fmt.Println() + utils.Println(utils.ColorBold + "Сетевые соединения и порты:" + utils.ColorReset) + utils.Command("ss -tuln", "прослушиваемые порты (t=tcp u=udp l=listen n=numeric)") + utils.Command("ss -tulnp", "с именами процессов (root)") + utils.Command("ss -s", "статистика соединений") + utils.Command("ss -tn state established", "активные TCP-соединения") + utils.Command("netstat -tuln", "аналог ss (устаревший)") + utils.Command("lsof -i :80", "что слушает порт 80") + utils.Command("lsof -i :22", "что слушает порт 22") + utils.Command("nmap -sS 192.168.1.0/24", "сканирование сети (нужно установить)") + utils.Command("nmap -p 22,80,443 server", "проверить конкретные порты") + + // ─── 43. Работа с сетью ─────────────────────────────────────── + utils.Section("43. Настройка сети") + + utils.Println(utils.ColorBold + "Временная настройка (без сохранения):" + utils.ColorReset) + utils.Code(`# Добавить IP: +ip addr add 192.168.1.10/24 dev eth0 + +# Удалить IP: +ip addr del 192.168.1.10/24 dev eth0 + +# Включить/выключить интерфейс: +ip link set eth0 up +ip link set eth0 down + +# Добавить маршрут: +ip route add 10.0.0.0/8 via 192.168.1.1 +ip route add default via 192.168.1.1 + +# Удалить маршрут: +ip route del default`) + + utils.Println(utils.ColorBold + "NetworkManager — постоянная настройка:" + utils.ColorReset) + utils.Code(`# nmcli — командная строка NetworkManager +nmcli device status # список устройств +nmcli connection show # все соединения +nmcli connection show eth0 # параметры соединения + +# Статический IP: +nmcli con mod eth0 ipv4.addresses 192.168.1.10/24 +nmcli con mod eth0 ipv4.gateway 192.168.1.1 +nmcli con mod eth0 ipv4.dns "8.8.8.8 8.8.4.4" +nmcli con mod eth0 ipv4.method manual # static (не DHCP) +nmcli con up eth0 # применить + +# DHCP: +nmcli con mod eth0 ipv4.method auto +nmcli con up eth0 + +# Создать соединение: +nmcli con add type ethernet con-name myconn ifname eth1 \ + ipv4.addresses 10.0.0.5/24 ipv4.gateway 10.0.0.1 \ + ipv4.method manual + +# nmtui — псевдографический интерфейс: +nmtui`) + + utils.Println(utils.ColorBold + "DNS-настройка:" + utils.ColorReset) + utils.Code(`# /etc/resolv.conf — DNS-серверы: +nameserver 8.8.8.8 +nameserver 8.8.4.4 +search mydomain.local # домен для коротких имён + +# /etc/hosts — локальное разрешение имён: +127.0.0.1 localhost +192.168.1.10 server01.local server01 + +# Порядок разрешения (/etc/nsswitch.conf): +hosts: files dns myhostname # сначала /etc/hosts, потом DNS`) + + utils.Println(utils.ColorBold + "curl и wget — HTTP-запросы:" + utils.ColorReset) + utils.Command("curl https://example.com", "GET запрос") + utils.Command("curl -I https://example.com", "только заголовки") + utils.Command("curl -o file.txt https://example.com/file", "сохранить в файл") + utils.Command("curl -L https://example.com", "следовать перенаправлениям") + utils.Command("curl -X POST -d 'data' https://api.example.com", "POST запрос") + utils.Command("curl -H 'Authorization: Bearer token' https://api.example.com", "с заголовком") + utils.Command("wget https://example.com/file.tar.gz", "скачать файл") + utils.Command("wget -r -np https://example.com/docs/", "рекурсивно скачать") + + // ─── 44. SSH ────────────────────────────────────────────────── + utils.Section("44. Удалённый доступ — SSH") + + utils.Println("SSH (Secure Shell) — зашифрованный протокол удалённого доступа.") + fmt.Println() + utils.Println(utils.ColorBold + "Подключение:" + utils.ColorReset) + utils.Command("ssh user@server", "подключиться к серверу") + utils.Command("ssh user@192.168.1.10", "по IP") + utils.Command("ssh -p 2222 user@server", "нестандартный порт") + utils.Command("ssh -i ~/.ssh/mykey user@server", "с конкретным ключом") + utils.Command("ssh -v user@server", "подробный вывод (отладка)") + utils.Command("ssh -A user@server", "пробросить SSH-агент") + fmt.Println() + utils.Println(utils.ColorBold + "SSH-ключи — аутентификация без пароля:" + utils.ColorReset) + utils.Code(`# Генерация пары ключей: +ssh-keygen -t ed25519 -C "alice@example.com" # (рекомендуется) +ssh-keygen -t rsa -b 4096 -C "alice@example.com" # RSA 4096 + +# Файлы: +~/.ssh/id_ed25519 — приватный ключ (НИКОМУ не передавать!) +~/.ssh/id_ed25519.pub — публичный ключ + +# Скопировать публичный ключ на сервер: +ssh-copy-id user@server # автоматически +ssh-copy-id -i ~/.ssh/mykey.pub user@server + +# Вручную (добавить в ~/.ssh/authorized_keys на сервере): +cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys +chmod 600 ~/.ssh/authorized_keys +chmod 700 ~/.ssh/`) + + utils.Println(utils.ColorBold + "~/.ssh/config — настройка подключений:" + utils.ColorReset) + utils.Code(`# ~/.ssh/config +Host myserver + HostName 192.168.1.10 + User alice + Port 22 + IdentityFile ~/.ssh/id_ed25519 + ServerAliveInterval 60 + +Host bastion + HostName bastion.example.com + User admin + ForwardAgent yes + +Host internal + HostName 10.0.0.5 + User root + ProxyJump bastion # подключиться через bastion + +# Использование: +ssh myserver # вместо ssh alice@192.168.1.10 -i ~/.ssh/id_ed25519`) + + utils.Println(utils.ColorBold + "Передача файлов:" + utils.ColorReset) + utils.Command("scp file.txt user@server:/path/", "скопировать на сервер") + utils.Command("scp user@server:/path/file.txt .", "скопировать с сервера") + utils.Command("scp -r dir/ user@server:/path/", "директорию рекурсивно") + utils.Command("rsync -avzP dir/ user@server:/path/", "синхронизация (лучше scp)") + fmt.Println() + utils.Println(utils.ColorBold + "Конфигурация сервера (/etc/ssh/sshd_config):" + utils.ColorReset) + utils.Code(`Port 22 # порт (лучше изменить) +PermitRootLogin no # запретить вход root (рекомендуется) +PasswordAuthentication no # только ключи +PubkeyAuthentication yes # ключи разрешены +AuthorizedKeysFile .ssh/authorized_keys +AllowUsers alice bob # только эти пользователи +MaxAuthTries 3 # попытки аутентификации + +# Применить изменения: +sudo systemctl reload sshd + +# Проверить конфигурацию: +sudo sshd -t`) + + utils.Println(utils.ColorBold + "Туннели SSH (Port Forwarding):" + utils.ColorReset) + utils.Code(`# Локальный туннель (доступ к удалённому сервису через localhost): +ssh -L 8080:localhost:80 user@server +# Теперь http://localhost:8080 = http://server:80 + +# Удалённый туннель (открыть порт на удалённом сервере): +ssh -R 9090:localhost:3000 user@server +# Теперь server:9090 → localhost:3000 + +# SOCKS-прокси (динамический туннель): +ssh -D 1080 user@server +# Настроить браузер на SOCKS5 proxy localhost:1080`) + + utils.Footer() +} diff --git a/modules/linuxmodules/linux_packages.go b/modules/linuxmodules/linux_packages.go new file mode 100644 index 0000000..f0b9123 --- /dev/null +++ b/modules/linuxmodules/linux_packages.go @@ -0,0 +1,191 @@ +package linuxmodules + +import ( + "fmt" + "rubric/utils" +) + +var PackagesModule = Module{ + Key: "packages", + Aliases: []string{"pkg", "dnf", "apt", "пакеты"}, + Title: "Пакетный менеджер", + Description: "Тема 47: dnf (RHEL/Fedora) и apt (Debian/Ubuntu)", + Run: showPackages, +} + +func showPackages() { + utils.Header("Linux — Пакетный менеджер") + + utils.Section("47. Пакетные менеджеры: dnf и apt") + + utils.Println("Пакетный менеджер — инструмент установки, обновления и удаления ПО.") + utils.Println("Решает зависимости автоматически, загружает из репозиториев.") + fmt.Println() + utils.Println(utils.ColorBold + "Семейства дистрибутивов и их менеджеры:" + utils.ColorReset) + utils.Code(`RHEL / CentOS / Fedora / Rocky / AlmaLinux: + dnf (современный) / yum (устаревший) + Формат пакетов: .rpm + Репозитории: /etc/yum.repos.d/*.repo + +Debian / Ubuntu / Linux Mint: + apt (фронтенд) / dpkg (низкий уровень) + Формат пакетов: .deb + Репозитории: /etc/apt/sources.list, /etc/apt/sources.list.d/ + +Arch Linux: + pacman + +Alpine Linux: + apk`) + + // ─── dnf ────────────────────────────────────────────────────── + utils.Section("dnf — RHEL / Fedora / CentOS") + + utils.Println(utils.ColorBold + "Основные операции:" + utils.ColorReset) + utils.Command("dnf search nginx", "поиск пакета") + utils.Command("dnf info nginx", "информация о пакете") + utils.Command("dnf install nginx", "установить") + utils.Command("dnf install nginx -y", "без подтверждения") + utils.Command("dnf remove nginx", "удалить") + utils.Command("dnf update", "обновить все пакеты") + utils.Command("dnf update nginx", "обновить конкретный") + utils.Command("dnf upgrade --refresh", "обновить с принудительным обновлением метаданных") + utils.Command("dnf check-update", "показать доступные обновления") + fmt.Println() + utils.Println(utils.ColorBold + "Запросы и история:" + utils.ColorReset) + utils.Command("dnf list installed", "установленные пакеты") + utils.Command("dnf list available", "доступные пакеты") + utils.Command("dnf list | grep nginx", "найти в списке") + utils.Command("dnf provides /usr/bin/python3", "какой пакет предоставляет файл") + utils.Command("dnf provides '*/Makefile'", "поиск по glob") + utils.Command("rpm -ql nginx", "файлы установленного пакета") + utils.Command("rpm -qf /etc/nginx/nginx.conf", "какому пакету принадлежит файл") + utils.Command("rpm -qi nginx", "информация об установленном пакете") + utils.Command("dnf history", "история операций") + utils.Command("dnf history undo 5", "отменить операцию №5") + fmt.Println() + utils.Println(utils.ColorBold + "Группы пакетов:" + utils.ColorReset) + utils.Command("dnf group list", "список групп") + utils.Command("dnf group info 'Development Tools'", "информация о группе") + utils.Command("dnf group install 'Development Tools'", "установить группу") + utils.Command("dnf group remove 'Development Tools'", "удалить группу") + fmt.Println() + utils.Println(utils.ColorBold + "Репозитории:" + utils.ColorReset) + utils.Code(`# Список репозиториев: +dnf repolist +dnf repolist all # включая отключённые + +# Включить/выключить репозиторий: +dnf config-manager --enable epel +dnf config-manager --disable crb + +# Добавить репозиторий: +dnf install epel-release # EPEL (Extra Packages for Enterprise Linux) +dnf config-manager --add-repo https://rpm.example.com/example.repo + +# Установить из конкретного репозитория: +dnf install nginx --repo=epel + +# Файл репозитория (/etc/yum.repos.d/myrepo.repo): +[myrepo] +name=My Repository +baseurl=https://repo.example.com/rhel/$releasever/$basearch/ +enabled=1 +gpgcheck=1 +gpgkey=https://repo.example.com/RPM-GPG-KEY-myrepo`) + + utils.Println(utils.ColorBold + "Кэш и модули:" + utils.ColorReset) + utils.Command("dnf clean all", "очистить кэш") + utils.Command("dnf makecache", "обновить кэш метаданных") + utils.Command("dnf autoremove", "удалить ненужные зависимости") + utils.Command("dnf module list", "список модулей (AppStream)") + utils.Command("dnf module install nodejs:18", "установить модуль nodejs версии 18") + utils.Command("dnf module enable postgresql:15", "включить модуль") + + // ─── apt ────────────────────────────────────────────────────── + utils.Section("apt — Debian / Ubuntu") + + utils.Println(utils.ColorBold + "Основные операции:" + utils.ColorReset) + utils.Command("apt search nginx", "поиск пакета") + utils.Command("apt show nginx", "информация о пакете") + utils.Command("apt install nginx", "установить") + utils.Command("apt install nginx -y", "без подтверждения") + utils.Command("apt remove nginx", "удалить (конфиги остаются)") + utils.Command("apt purge nginx", "удалить с конфигами") + utils.Command("apt update", "обновить индекс репозиториев (метаданные)") + utils.Command("apt upgrade", "обновить установленные пакеты") + utils.Command("apt full-upgrade", "обновить, может удалять и устанавливать новые") + utils.Command("apt dist-upgrade", "аналог full-upgrade") + utils.Command("apt autoremove", "удалить ненужные зависимости") + utils.Command("apt clean", "очистить кэш скачанных пакетов") + utils.Command("apt autoclean", "очистить устаревший кэш") + fmt.Println() + utils.Println(utils.ColorBold + "Запросы:" + utils.ColorReset) + utils.Command("apt list --installed", "установленные пакеты") + utils.Command("apt list --upgradable", "пакеты с доступными обновлениями") + utils.Command("dpkg -l nginx", "статус установленного пакета") + utils.Command("dpkg -L nginx", "файлы установленного пакета") + utils.Command("dpkg -S /etc/nginx/nginx.conf", "какому пакету принадлежит файл") + utils.Command("dpkg -s nginx", "информация об установленном пакете") + fmt.Println() + utils.Println(utils.ColorBold + "Репозитории (Debian/Ubuntu):" + utils.ColorReset) + utils.Code(`# Конфиг: /etc/apt/sources.list +# Ubuntu 22.04: +deb http://ru.archive.ubuntu.com/ubuntu jammy main restricted +deb http://ru.archive.ubuntu.com/ubuntu jammy-updates main restricted +deb http://security.ubuntu.com/ubuntu jammy-security main restricted + +# Добавить PPA (Ubuntu): +add-apt-repository ppa:ondrej/php +apt update +apt install php8.3 + +# Добавить сторонний репозиторий (пример nginx): +# 1. Импортировать GPG-ключ: +curl -fsSL https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ + -o /etc/apt/keyrings/nginx.gpg +# 2. Добавить репозиторий: +echo "deb [signed-by=/etc/apt/keyrings/nginx.gpg] \ + http://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" \ + > /etc/apt/sources.list.d/nginx.list +# 3. Обновить и установить: +apt update && apt install nginx + +# Файл в /etc/apt/sources.list.d/: формат .list или .sources (deb822)`) + + utils.Println(utils.ColorBold + "Низкоуровневые операции (dpkg):" + utils.ColorReset) + utils.Code(`# Установить .deb файл: +dpkg -i package.deb +apt install -f # исправить зависимости после dpkg + +# Удалить: +dpkg -r package # без конфигов +dpkg -P package # с конфигами (purge) + +# Reconfigure (перенастроить): +dpkg-reconfigure tzdata +dpkg-reconfigure locales`) + + utils.Println(utils.ColorBold + "Общие инструменты управления ПО:" + utils.ColorReset) + utils.Code(`# Snap (Ubuntu, кросс-дистрибутивный): +snap install code --classic +snap list +snap remove code +snap refresh + +# Flatpak (кросс-дистрибутивный): +flatpak install flathub org.gimp.GIMP +flatpak run org.gimp.GIMP +flatpak list + +# pip (Python): +pip install requests +pip install -r requirements.txt +pip list + +# npm (Node.js): +npm install -g pm2 +npm list -g`) + + utils.Footer() +} diff --git a/modules/linuxmodules/linux_perfomance.go b/modules/linuxmodules/linux_perfomance.go new file mode 100644 index 0000000..9d9350e --- /dev/null +++ b/modules/linuxmodules/linux_perfomance.go @@ -0,0 +1,264 @@ +package linuxmodules + +import ( + "fmt" + "rubric/utils" +) + +var PerformanceModule = Module{ + Key: "performance", + Aliases: []string{"perf", "swap", "tuned", "производительность"}, + Title: "Производительность системы", + Description: "Темы 49–52: виртуальная память, планировщик CPU, tuned, Stratis", + Run: showPerformance, +} + +func showPerformance() { + utils.Header("Linux — Производительность системы") + + // ─── 49. Виртуальная память, swap ──────────────────────────── + utils.Section("49. Виртуальная память и swap") + + utils.Println("Виртуальная память — механизм ядра, позволяющий процессам иметь") + utils.Println("больше памяти, чем физически установлено, за счёт использования диска.") + fmt.Println() + utils.Println(utils.ColorBold + "Swap — раздел/файл подкачки:" + utils.ColorReset) + utils.Code(`Когда физической RAM не хватает, ядро перемещает +редко используемые страницы памяти на swap. +Это медленнее RAM в сотни раз, но лучше OOM-killer. + +Типы swap: +- раздел swap (swap partition) — отдельный раздел диска +- файл swap (swapfile) — обычный файл на любой ФС`) + + utils.Println(utils.ColorBold + "Просмотр swap:" + utils.ColorReset) + utils.Command("free -h", "RAM и swap (human-readable)") + utils.Command("swapon --show", "активные swap-устройства") + utils.Command("cat /proc/swaps", "то же через /proc") + utils.Command("vmstat -s", "статистика памяти и swap") + fmt.Println() + utils.Println(utils.ColorBold + "Создание swapfile:" + utils.ColorReset) + utils.Code(`# 1. Создать файл нужного размера: +sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 # 2 ГБ +# или быстрее: +sudo fallocate -l 2G /swapfile + +# 2. Установить права (только root): +sudo chmod 600 /swapfile + +# 3. Форматировать как swap: +sudo mkswap /swapfile + +# 4. Активировать: +sudo swapon /swapfile + +# 5. Добавить в /etc/fstab для автоматической активации: +echo '/swapfile none swap defaults 0 0' | sudo tee -a /etc/fstab`) + + utils.Println(utils.ColorBold + "Управление swap:" + utils.ColorReset) + utils.Command("swapon /dev/sdb2", "активировать swap-раздел") + utils.Command("swapoff /swapfile", "деактивировать") + utils.Command("swapoff -a", "деактивировать все swap") + utils.Command("swapon -a", "активировать все из /etc/fstab") + fmt.Println() + utils.Println(utils.ColorBold + "vm.swappiness — настройка агрессивности swap:" + utils.ColorReset) + utils.Code(`# swappiness: 0–100 +# 0 — использовать swap только при нехватке RAM +# 60 — по умолчанию +# 100 — активно перемещать страницы в swap + +# Посмотреть: +cat /proc/sys/vm/swappiness +sysctl vm.swappiness + +# Изменить временно: +sudo sysctl -w vm.swappiness=10 + +# Постоянно в /etc/sysctl.d/99-swap.conf: +vm.swappiness = 10 +vm.vfs_cache_pressure = 50 # агрессивность освобождения кэша inode`) + + utils.Println(utils.ColorBold + "OOM-killer (Out Of Memory):" + utils.ColorReset) + utils.Code(`Когда память (RAM + swap) исчерпана, ядро убивает процессы. + +# Посмотреть OOM-события в логах: +dmesg | grep -i "oom\|killed process" +journalctl -k | grep -i oom + +# oom_score — чем выше, тем вероятнее убийство: +cat /proc/PID/oom_score + +# Защитить процесс от OOM (от -17 до 15): +echo -1000 > /proc/PID/oom_score_adj # максимальная защита +# или через systemd в юните: +OOMScoreAdjust=-1000`) + + // ─── 50. Планировщик процессов ─────────────────────────────── + utils.Section("50. Планировщик процессов") + + utils.Println("Планировщик CPU распределяет процессорное время между процессами.") + fmt.Println() + utils.Println(utils.ColorBold + "Политики планирования:" + utils.ColorReset) + utils.Code(`SCHED_OTHER — обычные процессы (CFS — Completely Fair Scheduler) +SCHED_FIFO — реального времени, без вытеснения +SCHED_RR — реального времени, с квантованием +SCHED_BATCH — фоновые задачи (CPU-bound) +SCHED_IDLE — минимальный приоритет (ниже nice 19) +SCHED_DEADLINE — задачи с дедлайном`) + + utils.Println(utils.ColorBold + "nice и renice — управление приоритетом:" + utils.ColorReset) + utils.Code(`# Nice: -20 (высший приоритет) → 19 (низший) +# По умолчанию: 0 +# Только root может установить отрицательные значения + +# Запустить с пониженным приоритетом: +nice -n 15 make -j8 # фоновая сборка + +# Запустить с повышенным (root): +sudo nice -n -10 realtime_app + +# Изменить приоритет запущенного процесса: +renice -n 5 -p 1234 # по PID +renice -n 10 -u alice # всем процессам пользователя +sudo renice -n -5 -p 1234 # повысить (нужен root)`) + + utils.Println(utils.ColorBold + "chrt — управление политикой планирования:" + utils.ColorReset) + utils.Command("chrt -p 1234", "показать политику процесса") + utils.Command("chrt -f -p 50 1234", "установить FIFO с приоритетом 50") + utils.Command("chrt -r 1234", "установить Round-Robin") + utils.Command("chrt -o -p 0 1234", "обычная политика (SCHED_OTHER)") + utils.Command("chrt -f 50 ./myapp", "запустить с FIFO приоритетом 50") + fmt.Println() + utils.Println(utils.ColorBold + "Просмотр загрузки CPU:" + utils.ColorReset) + utils.Command("mpstat 1 5", "загрузка каждого CPU (пакет sysstat)") + utils.Command("mpstat -P ALL 1", "все ядра каждую секунду") + utils.Command("iostat -x 1", "статистика I/O дисков") + utils.Command("sar -u 1 10", "средняя загрузка CPU 10 раз по 1 сек") + utils.Command("perf top", "top по использованию CPU (нужен perf)") + utils.Code(`# cpupower — управление частотой CPU: +cpupower frequency-info # текущий режим +cpupower frequency-set -g performance # режим производительности +# governors: performance, powersave, ondemand, conservative`) + + // ─── 51. tuned ──────────────────────────────────────────────── + utils.Section("51. Оптимизация производительности — tuned") + + utils.Println("tuned — демон автоматической оптимизации системы по профилям.") + utils.Println("Настраивает CPU, диски, сеть под конкретные сценарии использования.") + fmt.Println() + utils.Println(utils.ColorBold + "Управление tuned:" + utils.ColorReset) + utils.Command("systemctl status tuned", "статус демона") + utils.Command("tuned-adm active", "текущий профиль") + utils.Command("tuned-adm list", "список доступных профилей") + utils.Command("tuned-adm profile throughput-performance", "применить профиль") + utils.Command("tuned-adm recommend", "рекомендованный профиль для этой системы") + utils.Command("tuned-adm off", "отключить tuned") + fmt.Println() + utils.Println(utils.ColorBold + "Встроенные профили:" + utils.ColorReset) + utils.Code(`balanced — баланс производительности и энергопотребления +powersave — минимальное энергопотребление +throughput-performance — максимальная пропускная способность (серверы) +latency-performance — минимальная задержка (без энергосбережения) +network-latency — минимальная сетевая задержка +network-throughput — максимальная сетевая пропускная способность +virtual-guest — оптимизация для виртуальных машин +virtual-host — оптимизация для хоста виртуализации +oracle — для Oracle DB +mssql — для MS SQL Server +desktop — для рабочих станций`) + + utils.Println(utils.ColorBold + "Создание собственного профиля:" + utils.ColorReset) + utils.Code(`# Профили хранятся в /usr/lib/tuned/ (системные) +# и /etc/tuned/ (пользовательские) + +# Создать профиль на основе существующего: +mkdir /etc/tuned/myprofile +cat > /etc/tuned/myprofile/tuned.conf << 'EOF' +[main] +summary=Мой профиль +include=throughput-performance + +[cpu] +governor=performance +energy_perf_bias=performance + +[disk] +readahead=>4096 + +[sysctl] +vm.swappiness=10 +net.core.somaxconn=65535 +EOF + +tuned-adm profile myprofile`) + + // ─── 52. Stratis ────────────────────────────────────────────── + utils.Section("52. Управление многоуровневым хранилищем — Stratis") + + utils.Println("Stratis — менеджер хранилища от Red Hat (RHEL 8+).") + utils.Println("Упрощает создание пулов, снапшотов и тонкого выделения места.") + utils.Println("Работает поверх LVM и XFS.") + fmt.Println() + utils.Code(`Архитектура Stratis: +Physical Device (/dev/sdb, /dev/sdc) + ↓ + Pool (пул хранилища) + ↓ + Filesystem (XFS файловая система) + +Особенности: +- Тонкое выделение (thin provisioning) +- Снапшоты (моментальные снимки) +- Кэширование (SSD как кэш для HDD) +- Автоматическое управление XFS`) + + utils.Println(utils.ColorBold + "Установка и запуск:" + utils.ColorReset) + utils.Code(`# RHEL/Fedora: +dnf install stratisd stratis-cli +systemctl enable --now stratisd`) + + utils.Println(utils.ColorBold + "Работа с пулами:" + utils.ColorReset) + utils.Code(`# Создать пул: +stratis pool create mypool /dev/sdb +stratis pool create mypool /dev/sdb /dev/sdc # из нескольких дисков + +# Добавить диск в существующий пул: +stratis pool add-data mypool /dev/sdd + +# Добавить кэш (SSD): +stratis pool add-cache mypool /dev/nvme0n1 + +# Список пулов: +stratis pool list + +# Детали пула: +stratis pool info mypool`) + + utils.Println(utils.ColorBold + "Работа с файловыми системами:" + utils.ColorReset) + utils.Code(`# Создать ФС в пуле: +stratis filesystem create mypool myfs + +# Список ФС: +stratis filesystem list +stratis fs + +# Монтирование: +mount /stratis/mypool/myfs /mnt/data + +# В /etc/fstab (с x-systemd.requires): +/stratis/mypool/myfs /mnt/data xfs defaults,x-systemd.requires=stratisd.service 0 0 + +# Создать снапшот: +stratis filesystem snapshot mypool myfs myfs-snapshot + +# Удалить ФС: +stratis filesystem destroy mypool myfs + +# Удалить пул (сначала удалить все ФС): +stratis pool destroy mypool`) + + utils.Note("Stratis автоматически форматирует дискипод XFS. Не используйте mkfs вручную.") + utils.Note("Снапшоты — это отдельные ФС. Можно смонтировать для восстановления файлов.") + + utils.Footer() +} diff --git a/modules/linuxmodules/linux_processes.go b/modules/linuxmodules/linux_processes.go new file mode 100644 index 0000000..e389d9d --- /dev/null +++ b/modules/linuxmodules/linux_processes.go @@ -0,0 +1,207 @@ +package linuxmodules + +import ( + "fmt" + "rubric/utils" +) + +var ProcessesModule = Module{ + Key: "processes", + Aliases: []string{"proc", "ps", "процессы"}, + Title: "Процессы", + Description: "Темы 14–16: информация о процессах, сигналы, управление процессами", + Run: showProcesses, +} + +func showProcesses() { + utils.Header("Linux — Процессы") + + // ─── 14. Процессы №1: информация ───────────────────────────── + utils.Section("14. Процессы №1: информация о процессах") + + utils.Println("Процесс — выполняющаяся программа. Каждый процесс имеет уникальный PID.") + fmt.Println() + utils.Println(utils.ColorBold + "ps — информация о процессах:" + utils.ColorReset) + utils.Command("ps", "процессы текущего терминала") + utils.Command("ps aux", "все процессы всех пользователей (BSD стиль)") + utils.Command("ps -ef", "все процессы (UNIX стиль)") + utils.Command("ps aux | grep nginx", "найти процессы nginx") + utils.Command("ps -u alice", "процессы пользователя alice") + utils.Command("ps --forest", "дерево процессов (родитель → потомок)") + fmt.Println() + utils.Code(`# Вывод ps aux: +USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND +root 1 0.0 0.1 168384 13312 ? Ss Jan01 0:05 /sbin/init +alice 1234 2.1 1.5 567890 61234 pts/0 Sl 10:30 0:12 firefox + +Поля: +USER — владелец процесса +PID — Process ID (уникальный номер) +PPID — Parent PID (родительский процесс) +%CPU — использование процессора +%MEM — использование памяти +VSZ — виртуальная память (КБ) +RSS — реальная память (КБ) +TTY — терминал (? = нет терминала, демон) +STAT — состояние процесса +START — время запуска +TIME — суммарное CPU-время +COMMAND — команда + +Коды состояния (STAT): +R — Running (работает) +S — Sleeping (ожидает, прерываемый) +D — Sleeping (ожидает, непрерываемый, I/O) +Z — Zombie (завершён, ждёт родителя) +T — Stopped (остановлен сигналом) +s — лидер сессии ++ — процесс переднего плана +l — многопоточный`) + + utils.Println(utils.ColorBold + "pstree — дерево процессов:" + utils.ColorReset) + utils.Command("pstree", "дерево всех процессов") + utils.Command("pstree -p", "с PID") + utils.Command("pstree alice", "только процессы пользователя alice") + fmt.Println() + utils.Println(utils.ColorBold + "/proc — виртуальная файловая система:" + utils.ColorReset) + utils.Code(`/proc — информация о процессах и ядре +/proc/PID/ — директория конкретного процесса +/proc/PID/cmdline — командная строка запуска +/proc/PID/status — статус процесса (память, UID...) +/proc/PID/fd/ — открытые файловые дескрипторы +/proc/PID/maps — карта памяти процесса +/proc/cpuinfo — информация о CPU +/proc/meminfo — информация о памяти +/proc/loadavg — средняя загрузка + +# Примеры: +cat /proc/1/cmdline # команда процесса PID=1 +cat /proc/cpuinfo | grep "model name" +cat /proc/meminfo | grep MemAvail`) + + // ─── 15. Процессы №2: информация ───────────────────────────── + utils.Section("15. Процессы №2: мониторинг в реальном времени") + + utils.Println(utils.ColorBold + "top — динамический мониторинг:" + utils.ColorReset) + utils.Command("top", "интерактивный мониторинг (обновляется каждые 3 сек)") + utils.Command("top -u alice", "только процессы пользователя alice") + utils.Command("top -p 1234,5678", "только указанные PID") + utils.Command("top -b -n 1", "пакетный режим (для скриптов/логирования)") + fmt.Println() + utils.Code(`Клавиши в top: + q — выйти + h — справка + k — убить процесс (ввести PID) + r — изменить nice (приоритет) + M — сортировать по памяти + P — сортировать по CPU + T — сортировать по времени + 1 — показать каждый CPU отдельно + f — настройка столбцов + u — фильтр по пользователю`) + + utils.Println(utils.ColorBold + "htop — улучшенный top (нужно установить):" + utils.ColorReset) + utils.Command("htop", "цветной интерактивный мониторинг") + utils.Code(`# Установка: +apt install htop # Debian/Ubuntu +dnf install htop # RHEL/Fedora`) + + utils.Println(utils.ColorBold + "Мониторинг ресурсов:" + utils.ColorReset) + utils.Command("free -h", "использование памяти (human-readable)") + utils.Command("free -m", "в мегабайтах") + utils.Command("vmstat 2 5", "статистика памяти, CPU каждые 2 сек, 5 раз") + utils.Command("uptime", "время работы системы и средняя загрузка") + utils.Command("w", "кто залогинен и что делает") + utils.Command("who", "список залогиненных пользователей") + utils.Command("last", "история входов в систему") + fmt.Println() + utils.Code(`# Средняя загрузка (load average): +uptime +# 10:30:00 up 5 days, 2:15, 2 users, load average: 0.52, 0.41, 0.35 +# 1min 5min 15min + +# Значение = количество процессов ждущих CPU +# На однопроцессорной системе: +# < 1.0 — нормально +# = 1.0 — 100% загрузка +# > 1.0 — перегрузка (очередь) +# На N ядрах перегрузка начинается при load > N`) + + utils.Println(utils.ColorBold + "lsof — открытые файлы и соединения:" + utils.ColorReset) + utils.Command("lsof", "все открытые файлы (очень много)") + utils.Command("lsof -p 1234", "открытые файлы процесса 1234") + utils.Command("lsof -u alice", "файлы пользователя alice") + utils.Command("lsof -i :80", "что использует порт 80") + utils.Command("lsof -i TCP", "все TCP соединения") + utils.Command("lsof /var/log/syslog", "какие процессы используют этот файл") + + // ─── 16. Процессы №3: управление ───────────────────────────── + utils.Section("16. Процессы №3: управление процессами") + + utils.Println(utils.ColorBold + "Сигналы:" + utils.ColorReset) + utils.Code(`Сигнал — асинхронное уведомление процессу. + +Номер Имя Действие по умолчанию +────────────────────────────────────────────────────── +1 SIGHUP Завершить (или перечитать конфиг для демонов) +2 SIGINT Прервать (Ctrl+C) +3 SIGQUIT Завершить с core dump (Ctrl+\) +9 SIGKILL Убить немедленно (нельзя перехватить/игнорировать) +15 SIGTERM Завершить корректно (по умолчанию для kill) +17 SIGCHLD Дочерний процесс изменил состояние +18 SIGCONT Продолжить остановленный процесс +19 SIGSTOP Остановить (нельзя перехватить/игнорировать) +20 SIGTSTP Остановить (Ctrl+Z, можно перехватить)`) + + utils.Println(utils.ColorBold + "kill — отправить сигнал процессу:" + utils.ColorReset) + utils.Command("kill 1234", "SIGTERM (15) процессу 1234 — корректное завершение") + utils.Command("kill -9 1234", "SIGKILL — принудительное убийство") + utils.Command("kill -15 1234", "SIGTERM явно") + utils.Command("kill -HUP 1234", "SIGHUP (перечитать конфиг)") + utils.Command("kill -l", "список всех сигналов") + utils.Command("killall nginx", "SIGTERM всем процессам с именем nginx") + utils.Command("killall -9 nginx", "SIGKILL всем nginx") + utils.Command("pkill nginx", "SIGTERM по имени (поддерживает regex)") + utils.Command("pkill -u alice", "завершить все процессы пользователя alice") + fmt.Println() + utils.Note("Сначала используйте kill (SIGTERM) — даёт процессу завершиться корректно. SIGKILL только если SIGTERM не помог.") + + utils.Println(utils.ColorBold + "Приоритет процессов (nice):" + utils.ColorReset) + utils.Code(`Nice значение: от -20 (максимальный приоритет) до 19 (минимальный) +По умолчанию: 0 + +# Запустить с пониженным приоритетом: +nice -n 10 make -j4 + +# Изменить приоритет запущенного процесса: +renice -n 5 -p 1234 # PID +renice -n 5 -u alice # для пользователя +# renice на отрицательное значение требует root`) + + utils.Println(utils.ColorBold + "Фоновые процессы и задания (job control):" + utils.ColorReset) + utils.Code(`# Запустить в фоне: +command & # & в конце +long_task.sh & + +# Управление заданиями: +jobs # список фоновых заданий текущего терминала +jobs -l # с PID +fg # вернуть последнее задание на передний план +fg %2 # вернуть задание №2 +bg # продолжить остановленное в фоне +bg %1 # продолжить задание №1 в фоне + +# Ctrl+Z — приостановить текущий процесс (SIGTSTP) +# Затем bg — продолжить в фоне + +# Процесс продолжит работу после выхода из терминала: +nohup command & # игнорировать SIGHUP при выходе +disown %1 # отвязать задание от терминала`) + + utils.Println(utils.ColorBold + "watch — периодически выполнять команду:" + utils.ColorReset) + utils.Command("watch -n 2 'ps aux | grep nginx'", "каждые 2 сек смотреть процессы nginx") + utils.Command("watch -d free -h", "следить за памятью, выделять изменения") + utils.Command("watch -n 1 uptime", "загрузка каждую секунду") + + utils.Footer() +} diff --git a/modules/linuxmodules/linux_registry.go b/modules/linuxmodules/linux_registry.go new file mode 100644 index 0000000..a393ed9 --- /dev/null +++ b/modules/linuxmodules/linux_registry.go @@ -0,0 +1,69 @@ +package linuxmodules + +import ( + "fmt" + "rubric/utils" + "strings" +) + +// Module описывает один раздел справочника Linux +type Module struct { + Key string + Aliases []string + Title string + Description string + Run func() +} + +// All — список всех модулей в порядке меню +var All = []Module{ + IntroModule, + FilesModule, + StreamsModule, + BashModule, + ProcessesModule, + UsersModule, + KernelModule, + DisksModule, + ScriptsModule, + BootModule, + LogsModule, + BackupModule, + NetworkModule, + SecurityModule, + PackagesModule, + PerformanceModule, + SysconfigModule, + NetfsModule, + ToolsModule, +} + +// Find ищет модуль по ключу или алиасу +func Find(key string) (Module, bool) { + key = strings.ToLower(strings.TrimSpace(key)) + for _, m := range All { + if m.Key == key { + return m, true + } + for _, a := range m.Aliases { + if a == key { + return m, true + } + } + } + return Module{}, false +} + +// ListModules выводит краткий список модулей +func ListModules() { + fmt.Printf("\n%s%sРазделы справочника Linux:%s\n\n", + utils.ColorBold, utils.ColorCyan, utils.ColorReset) + for i, m := range All { + fmt.Printf(" %s%d.%s %-12s — %s\n", + utils.ColorDim, i+1, utils.ColorReset, + utils.ColorYellow+utils.ColorBold+m.Key+utils.ColorReset, + m.Title, + ) + } + fmt.Println() +} diff --git a/modules/linuxmodules/linux_scripts.go b/modules/linuxmodules/linux_scripts.go new file mode 100644 index 0000000..d7d78e7 --- /dev/null +++ b/modules/linuxmodules/linux_scripts.go @@ -0,0 +1,318 @@ +package linuxmodules + +import ( + "fmt" + "rubric/utils" +) + +var ScriptsModule = Module{ + Key: "scripts", + Aliases: []string{"sc", "scripting", "скрипты"}, + Title: "Bash-скрипты", + Description: "Темы 27–32: скрипты, условия, циклы, функции, массивы", + Run: showScripts, +} + +func showScripts() { + utils.Header("Linux — Bash-скрипты") + + // ─── 27. Bash скрипты №1 ────────────────────────────────────── + utils.Section("27. Основы скриптов. Условия") + + utils.Println(utils.ColorBold + "Структура скрипта:" + utils.ColorReset) + utils.Code(`#!/bin/bash +# Shebang — первая строка указывает интерпретатор +# Комментарий + +echo "Привет, мир!" + +# Запуск скрипта: +chmod +x script.sh # сделать исполняемым +./script.sh # запустить +bash script.sh # запустить через bash (без chmod)`) + + utils.Println(utils.ColorBold + "Переменные в скриптах:" + utils.ColorReset) + utils.Code(`#!/bin/bash +name="Alice" +count=5 + +echo "Имя: $name" +echo "Счёт: $count" + +# Ввод от пользователя: +read -p "Введите имя: " username +echo "Привет, $username!" + +# Ввод без отображения (пароль): +read -s -p "Пароль: " password`) + + utils.Println(utils.ColorBold + "Условный оператор if:" + utils.ColorReset) + utils.Code(`#!/bin/bash +# Базовая форма: +if [ условие ]; then + команды +elif [ другое_условие ]; then + команды +else + команды +fi + +# Примеры условий: +# Сравнение строк: +if [ "$name" = "Alice" ]; then echo "Привет, Alice"; fi +if [ "$name" != "Bob" ]; then echo "Не Боб"; fi +if [ -z "$name" ]; then echo "Пустая строка"; fi # -z = пусто +if [ -n "$name" ]; then echo "Не пустая"; fi # -n = не пусто + +# Сравнение чисел: +if [ "$count" -eq 5 ]; then ... # equal +if [ "$count" -ne 5 ]; then ... # not equal +if [ "$count" -gt 3 ]; then ... # greater than +if [ "$count" -lt 10 ]; then ... # less than +if [ "$count" -ge 5 ]; then ... # greater or equal +if [ "$count" -le 5 ]; then ... # less or equal + +# Файлы и директории: +if [ -f /etc/passwd ]; then echo "файл существует"; fi +if [ -d /tmp ]; then echo "директория существует"; fi +if [ -e /dev/sda ]; then echo "путь существует"; fi +if [ -r file ]; then echo "доступен для чтения"; fi +if [ -w file ]; then echo "доступен для записи"; fi +if [ -x script.sh ]; then echo "исполняемый"; fi +if [ -s file ]; then echo "файл не пустой"; fi +if [ file1 -nt file2 ]; then echo "file1 новее"; fi + +# Логика: +if [ cond1 ] && [ cond2 ]; then ... # И +if [ cond1 ] || [ cond2 ]; then ... # ИЛИ +if ! [ cond ]; then ... # НЕ + +# [[ ]] — расширенные условия bash: +if [[ "$str" == *"подстрока"* ]]; then ... # glob +if [[ "$str" =~ ^[0-9]+$ ]]; then ... # regex`) + + // ─── 28–29. Bash скрипты №2–3 ───────────────────────────────── + utils.Section("28–29. Циклы") + + utils.Println(utils.ColorBold + "Цикл for:" + utils.ColorReset) + utils.Code(`# По списку: +for item in один два три; do + echo "$item" +done + +# По числовому диапазону: +for i in {1..5}; do + echo "Шаг $i" +done + +# С шагом: +for i in {0..20..5}; do echo "$i"; done # 0 5 10 15 20 + +# C-стиль: +for ((i=0; i<5; i++)); do + echo "$i" +done + +# По файлам: +for file in /etc/*.conf; do + echo "Обрабатываю: $file" +done + +# По строкам вывода команды: +for user in $(cat /etc/passwd | cut -d: -f1); do + echo "Пользователь: $user" +done`) + + utils.Println(utils.ColorBold + "Цикл while:" + utils.ColorReset) + utils.Code(`# Пока условие истинно: +count=0 +while [ $count -lt 5 ]; do + echo "count = $count" + ((count++)) +done + +# Чтение файла построчно: +while IFS= read -r line; do + echo "Строка: $line" +done < /etc/hosts + +# Бесконечный цикл: +while true; do + echo "Работаю..." + sleep 1 +done`) + + utils.Println(utils.ColorBold + "Цикл until и управление циклами:" + utils.ColorReset) + utils.Code(`# Пока условие ложно: +until [ -f /tmp/ready ]; do + echo "Жду файл..." + sleep 1 +done + +# break — выйти из цикла: +for i in {1..10}; do + if [ $i -eq 5 ]; then break; fi + echo $i +done + +# continue — перейти к следующей итерации: +for i in {1..10}; do + if [ $((i % 2)) -eq 0 ]; then continue; fi + echo "Нечётное: $i" +done`) + + // ─── 30–31. Bash скрипты №4–5 ───────────────────────────────── + utils.Section("30–31. Функции и обработка ошибок") + + utils.Println(utils.ColorBold + "Функции:" + utils.ColorReset) + utils.Code(`#!/bin/bash +# Объявление функции: +greet() { + local name=$1 # local — локальная переменная + echo "Привет, $name!" +} + +# Или: +function greet { + echo "Привет, $1!" +} + +# Вызов: +greet "Alice" +greet "Bob" + +# Возвращаемое значение: +# Функции возвращают только числа (код возврата 0-255) +is_root() { + [ "$(id -u)" -eq 0 ] +} + +if is_root; then + echo "Запущен как root" +fi + +# Для передачи строк — echo + подстановка команд: +get_hostname() { + echo "$(hostname)" +} +host=$(get_hostname)`) + + utils.Println(utils.ColorBold + "Обработка ошибок:" + utils.ColorReset) + utils.Code(`#!/bin/bash +# Остановить при ошибке: +set -e # выйти при любой ошибке (exit on error) +set -u # ошибка при неопределённой переменной +set -o pipefail # учитывать ошибки в pipe +set -euo pipefail # всё вместе (рекомендуется) + +# Проверка кода возврата: +if ! mkdir /tmp/mydir 2>/dev/null; then + echo "Ошибка создания директории" >&2 + exit 1 +fi + +# Функция для вывода ошибок: +error() { + echo "ОШИБКА: $*" >&2 + exit 1 +} + +[ -f "$1" ] || error "Файл $1 не найден" + +# Trap — обработка сигналов и выхода: +cleanup() { + rm -f /tmp/tempfile + echo "Очищено" +} +trap cleanup EXIT # при любом выходе +trap cleanup INT TERM # при Ctrl+C или kill`) + + // ─── 32. Bash скрипты №6 ────────────────────────────────────── + utils.Section("32. Массивы, строки и аргументы скрипта") + + utils.Println(utils.ColorBold + "Массивы:" + utils.ColorReset) + utils.Code(`# Объявление: +fruits=("яблоко" "банан" "апельсин") +declare -a numbers=(1 2 3 4 5) + +# Доступ: +echo "${fruits[0]}" # яблоко (индекс с 0) +echo "${fruits[@]}" # все элементы +echo "${#fruits[@]}" # количество элементов +echo "${fruits[@]:1:2}" # срез: с индекса 1, 2 элемента + +# Добавить элемент: +fruits+=("манго") + +# Перебор: +for fruit in "${fruits[@]}"; do + echo "$fruit" +done + +# Перебор с индексом: +for i in "${!fruits[@]}"; do + echo "$i: ${fruits[$i]}" +done + +# Ассоциативный массив (словарь): +declare -A user +user[name]="Alice" +user[age]=30 +echo "${user[name]}" +echo "${!user[@]}" # ключи +echo "${user[@]}" # значения`) + + utils.Println(utils.ColorBold + "Аргументы скрипта:" + utils.ColorReset) + utils.Code(`#!/bin/bash +# Позиционные параметры: +echo "Скрипт: $0" +echo "Первый аргумент: $1" +echo "Второй аргумент: $2" +echo "Все аргументы: $@" +echo "Количество аргументов: $#" + +# Проверка аргументов: +if [ $# -lt 2 ]; then + echo "Использование: $0 <имя> <возраст>" >&2 + exit 1 +fi + +# Обработка опций (getopts): +while getopts "hv:n:" opt; do + case $opt in + h) echo "Справка"; exit 0 ;; + v) verbose=true ;; + n) name="$OPTARG" ;; + ?) echo "Неизвестный ключ"; exit 1 ;; + esac +done + +# shift — сдвинуть аргументы: +shift $((OPTIND - 1)) # убрать опции, остались обычные аргументы`) + + utils.Println(utils.ColorBold + "Полезные приёмы:" + utils.ColorReset) + utils.Code(`# Цвета в терминале: +RED='\033[0;31m' +GREEN='\033[0;32m' +NC='\033[0m' # No Color +echo -e "${RED}Ошибка${NC}" +echo -e "${GREEN}Успех${NC}" + +# Прогресс-бар простой: +for i in {1..10}; do + echo -ne "\rПрогресс: $((i*10))%" + sleep 0.1 +done; echo + +# Логирование: +LOG=/var/log/myscript.log +log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG"; } +log "Скрипт запущен" + +# Ожидание с таймаутом: +timeout 30 ./long_command.sh || echo "Таймаут!"`) + fmt.Println() + utils.Note("Проверяйте скрипты на ошибки: bash -n script.sh (синтаксис) и bash -x script.sh (трассировка).") + + utils.Footer() +} diff --git a/modules/linuxmodules/linux_security.go b/modules/linuxmodules/linux_security.go new file mode 100644 index 0000000..39c9dd3 --- /dev/null +++ b/modules/linuxmodules/linux_security.go @@ -0,0 +1,276 @@ +package linuxmodules + +import ( + "fmt" + "rubric/utils" +) + +var SecurityModule = Module{ + Key: "security", + Aliases: []string{"sec", "selinux", "firewall", "безопасность"}, + Title: "Безопасность: SELinux и Firewall", + Description: "Темы 45–46, 48: SELinux, firewalld, восстановление доступа", + Run: showSecurity, +} + +func showSecurity() { + utils.Header("Linux — Безопасность: SELinux и Firewall") + + // ─── 45. SELinux ────────────────────────────────────────────── + utils.Section("45. Принудительный контроль доступа — SELinux") + + utils.Println("SELinux (Security-Enhanced Linux) — система принудительного контроля доступа.") + utils.Println("Работает поверх обычных прав Unix: даже root ограничен политикой SELinux.") + fmt.Println() + utils.Println(utils.ColorBold + "Режимы SELinux:" + utils.ColorReset) + utils.Code(`Enforcing — SELinux активен, запрещённые действия блокируются + и логируются (производственный режим) +Permissive — SELinux активен, нарушения только логируются + (не блокируются). Для отладки. +Disabled — SELinux полностью отключён (требует перезагрузки) + +# Текущий режим: +getenforce +sestatus # подробная информация + +# Временно изменить режим (до перезагрузки): +setenforce 0 # Enforcing → Permissive +setenforce 1 # Permissive → Enforcing +setenforce Permissive # то же самое + +# Постоянно — /etc/selinux/config: +SELINUX=enforcing # enforcing / permissive / disabled +SELINUXTYPE=targeted # политика + +# После изменения с/на disabled — нужна перезагрузка. +# При включении SELinux после disabled — нужна переметка файлов: +touch /.autorelabel && reboot`) + + utils.Println(utils.ColorBold + "Контексты SELinux:" + utils.ColorReset) + utils.Code(`Каждый файл, процесс и порт имеет SELinux-контекст: +user:role:type:level + ↓ ↓ ↓ ↓ +system_u:object_r:httpd_sys_content_t:s0 + +Самое важное — type (тип): httpd_sys_content_t, etc_t... + +# Просмотр контекстов файлов: +ls -Z /var/www/html/ +ls -lZ /etc/nginx/ + +# Просмотр контекста процессов: +ps auxZ | grep nginx + +# Просмотр контекста портов: +semanage port -l | grep http`) + + utils.Println(utils.ColorBold + "Управление контекстами:" + utils.ColorReset) + utils.Code(`# Изменить контекст файла: +chcon -t httpd_sys_content_t /var/www/mysite/ +chcon -R -t httpd_sys_content_t /var/www/mysite/ # рекурсивно + +# Проблема: chcon не постоянен, restorecon сбросит его. +# Правильно: использовать semanage fcontext: + +# Добавить постоянное правило для контекста: +semanage fcontext -a -t httpd_sys_content_t '/srv/web(/.*)?' +# Применить правила к файлам: +restorecon -Rv /srv/web/ + +# Восстановить контекст по умолчанию: +restorecon -Rv /var/www/html/ + +# Проверить ожидаемый контекст: +matchpathcon /var/www/html/index.html`) + + utils.Println(utils.ColorBold + "Булевые переменные SELinux (Booleans):" + utils.ColorReset) + utils.Code(`# Booleans — включают/выключают определённые возможности: + +# Просмотр всех: +getsebool -a +getsebool -a | grep httpd + +# Включить/выключить (временно): +setsebool httpd_can_network_connect on +setsebool httpd_can_network_connect off + +# Постоянно (после перезагрузки): +setsebool -P httpd_can_network_connect on +setsebool -P httpd_enable_homedirs on + +# Полезные booleans: +httpd_can_network_connect # nginx/apache → внешняя сеть +httpd_can_network_connect_db # nginx/apache → БД +httpd_enable_homedirs # доступ к /home +samba_enable_home_dirs # Samba к /home +ssh_sysadm_login # SSH-вход для sysadmin`) + + utils.Println(utils.ColorBold + "Порты и SELinux:" + utils.ColorReset) + utils.Code(`# Посмотреть разрешённые порты: +semanage port -l +semanage port -l | grep http + +# Разрешить nginx слушать нестандартный порт 8888: +semanage port -a -t http_port_t -p tcp 8888 + +# Удалить правило порта: +semanage port -d -t http_port_t -p tcp 8888 + +# Изменить существующее правило: +semanage port -m -t http_port_t -p tcp 8888`) + + utils.Println(utils.ColorBold + "Диагностика проблем SELinux:" + utils.ColorReset) + utils.Code(`# Логи SELinux: +/var/log/audit/audit.log # основной лог + +# Поиск запретов: +ausearch -m avc -ts recent # последние запреты AVC +grep 'denied' /var/log/audit/audit.log | tail -20 + +# audit2why — объяснить запрет: +ausearch -m avc -ts recent | audit2why + +# audit2allow — создать модуль для разрешения: +ausearch -m avc -ts recent | audit2allow -m mymodule > mymodule.te +checkmodule -M -m -o mymodule.mod mymodule.te +semodule_package -o mymodule.pp -m mymodule.mod +semodule -i mymodule.pp + +# sealert — графическая диагностика (если установлен setroubleshoot): +sealert -a /var/log/audit/audit.log`) + + // ─── 46. firewalld ──────────────────────────────────────────── + utils.Section("46. Межсетевой экран — firewalld") + + utils.Println("firewalld — динамический менеджер firewall в RHEL/Fedora/CentOS.") + utils.Println("Работает поверх nftables (или iptables).") + fmt.Println() + utils.Println(utils.ColorBold + "Зоны (Zones) — основное понятие firewalld:" + utils.ColorReset) + utils.Code(`Зона определяет уровень доверия к трафику интерфейса. + +drop — всё входящее молча отбрасывается +block — входящее отклоняется с сообщением об ошибке +public — публичные сети, только явно разрешённое (по умолчанию) +external — внешние сети с маскарадингом +internal — внутренние сети, больше доверие +home — домашние сети +work — рабочие сети +dmz — демилитаризованная зона +trusted — весь трафик разрешён`) + + utils.Println(utils.ColorBold + "Основные команды firewall-cmd:" + utils.ColorReset) + utils.Command("firewall-cmd --state", "работает ли firewalld") + utils.Command("systemctl status firewalld", "статус сервиса") + utils.Command("firewall-cmd --get-active-zones", "активные зоны и интерфейсы") + utils.Command("firewall-cmd --get-default-zone", "зона по умолчанию") + utils.Command("firewall-cmd --list-all", "все правила активной зоны") + utils.Command("firewall-cmd --list-all --zone=public", "правила зоны public") + fmt.Println() + utils.Println(utils.ColorBold + "Управление сервисами и портами:" + utils.ColorReset) + utils.Code(`# Разрешить сервис (временно, до перезагрузки): +firewall-cmd --add-service=http +firewall-cmd --add-service=https +firewall-cmd --add-service=ssh + +# Постоянно (--permanent): +firewall-cmd --permanent --add-service=http +firewall-cmd --permanent --add-service=https +firewall-cmd --reload # применить permanent-правила + +# Удалить сервис: +firewall-cmd --permanent --remove-service=http + +# Список доступных сервисов: +firewall-cmd --get-services + +# Разрешить порт напрямую: +firewall-cmd --permanent --add-port=8080/tcp +firewall-cmd --permanent --add-port=5000-5100/tcp +firewall-cmd --permanent --remove-port=8080/tcp`) + + utils.Println(utils.ColorBold + "Rich rules — сложные правила:" + utils.ColorReset) + utils.Code(`# Разрешить SSH только с конкретного IP: +firewall-cmd --permanent --add-rich-rule=' + rule family="ipv4" + source address="192.168.1.0/24" + service name="ssh" accept' + +# Заблокировать IP: +firewall-cmd --permanent --add-rich-rule=' + rule family="ipv4" + source address="10.10.10.5" + drop' + +# Ограничить количество соединений (rate limiting): +firewall-cmd --permanent --add-rich-rule=' + rule service name="ssh" + limit value="5/m" accept'`) + + utils.Println(utils.ColorBold + "Маскарадинг (NAT):" + utils.ColorReset) + utils.Code(`# Включить маскарадинг (нужно для роутера): +firewall-cmd --permanent --zone=external --add-masquerade + +# Пробросить порт: +firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080 +# Внешний 80 → внутренний 8080`) + + // ─── 48. Восстановление доступа ─────────────────────────────── + utils.Section("48. Восстановление доступа") + + utils.Println("Что делать если потеряли пароль root или доступ к системе.") + fmt.Println() + utils.Println(utils.ColorBold + "Сброс пароля root (RHEL/CentOS):" + utils.ColorReset) + utils.Code(`1. Перезагрузить систему. +2. В меню GRUB нажать 'e' на нужной записи. +3. Найти строку начинающуюся с linux или linuxefi. +4. В конце строки добавить: rd.break +5. Нажать Ctrl+X для загрузки. + +# В initramfs shell: +mount -o remount,rw /sysroot # перемонтировать с правами записи +chroot /sysroot # перейти в систему +passwd root # задать новый пароль root +# Если SELinux включён: +touch /.autorelabel # переметить файлы SELinux +exit +reboot`) + + utils.Println(utils.ColorBold + "Сброс пароля root (Ubuntu/Debian):" + utils.ColorReset) + utils.Code(`1. В GRUB выбрать "Advanced options". +2. Выбрать строку "(recovery mode)". +3. В меню recovery выбрать "root". + +# Или: в GRUB нажать 'e', найти строку linux, +# заменить ro на rw, добавить в конец: init=/bin/bash + +# В shell: +passwd root +# Если файловая система только для чтения: +mount -o remount,rw / +passwd root +sync +reboot -f`) + + utils.Println(utils.ColorBold + "Восстановление из LiveCD:" + utils.ColorReset) + utils.Code(`# Загрузиться с LiveCD/LiveUSB + +# Найти системный раздел: +lsblk + +# Смонтировать: +mount /dev/sda2 /mnt +mount /dev/sda1 /mnt/boot # boot раздел + +# Для UEFI: +mount /dev/sda1 /mnt/boot/efi + +# Chroot: +mount --bind /dev /mnt/dev +mount --bind /proc /mnt/proc +mount --bind /sys /mnt/sys +chroot /mnt + +# Теперь можно: passwd root, grub-install, etc.`) + + utils.Footer() +} diff --git a/modules/linuxmodules/linux_streams.go b/modules/linuxmodules/linux_streams.go new file mode 100644 index 0000000..ca96025 --- /dev/null +++ b/modules/linuxmodules/linux_streams.go @@ -0,0 +1,135 @@ +package linuxmodules + +import ( + "fmt" + "rubric/utils" +) + +var StreamsModule = Module{ + Key: "streams", + Aliases: []string{"st", "io", "потоки"}, + Title: "Стандартные потоки и перенаправление", + Description: "Тема 11: stdin, stdout, stderr, перенаправление, pipe", + Run: showStreams, +} + +func showStreams() { + utils.Header("Linux — Стандартные потоки и перенаправление") + + // ─── 11. Стандартные потоки ─────────────────────────────────── + utils.Section("11. Стандартные потоки (Standard Streams)") + + utils.Println("Каждый процесс в Linux имеет три стандартных потока ввода-вывода:") + fmt.Println() + utils.Code(`Дескриптор Имя Поток По умолчанию +────────────────────────────────────────────────────── +0 stdin ввод клавиатура +1 stdout вывод терминал +2 stderr вывод ошибок терминал + +Программа читает из stdin, пишет результат в stdout, +ошибки — в stderr.`) + + utils.Println(utils.ColorBold + "Перенаправление вывода (stdout):" + utils.ColorReset) + utils.Code(`> — перенаправить stdout в файл (перезаписать) +>> — перенаправить stdout в файл (дописать в конец) + +ls /etc > list.txt # список файлов → файл +echo "строка" >> log.txt # дописать в конец +date > /dev/null # выбросить вывод в никуда`) + + utils.Println(utils.ColorBold + "Перенаправление ошибок (stderr):" + utils.ColorReset) + utils.Code(`2> — перенаправить stderr в файл +2>> — дописать stderr в файл +2>&1 — направить stderr туда же куда stdout + +ls /nonexistent 2> errors.txt # ошибки → файл +ls /etc 1> out.txt 2> err.txt # каждый поток отдельно +ls /etc /nonexistent > all.txt 2>&1 # всё в один файл +ls /etc /nonexistent &> all.txt # краткая форма bash +ls /etc /nonexistent 2>/dev/null # подавить ошибки`) + + utils.Println(utils.ColorBold + "Перенаправление ввода (stdin):" + utils.ColorReset) + utils.Code(`< — читать stdin из файла + +sort < unsorted.txt # отсортировать содержимое файла +wc -l < file.txt # считать строки из файла + +# Here-document — передать несколько строк: +cat << EOF +строка 1 +строка 2 +EOF + +# Here-string — передать строку: +grep 'pattern' <<< "одна строка для поиска"`) + + utils.Println(utils.ColorBold + "Конвейер (pipe) |:" + utils.ColorReset) + utils.Println("Pipe передаёт stdout одной команды в stdin следующей.") + utils.Code(`ls -la | grep '.conf' # только .conf файлы +cat /etc/passwd | sort # отсортировать passwd +ps aux | grep nginx # найти процессы nginx +cat file.txt | wc -l # посчитать строки +ls /etc | head -10 # первые 10 строк +history | tail -20 | grep git # цепочка из трёх команд`) + + utils.Println(utils.ColorBold + "tee — записать и передать дальше:" + utils.ColorReset) + utils.Code(`# tee читает stdin, пишет в файл И в stdout: +ls -la | tee listing.txt | grep '.conf' + +# -a — дописать в файл (append): +echo "строка" | tee -a log.txt`) + + utils.Println(utils.ColorBold + "xargs — передать строки как аргументы:" + utils.ColorReset) + utils.Code(`# find возвращает список файлов, xargs передаёт их rm: +find /tmp -name '*.tmp' | xargs rm -f + +# -I{} — подстановка каждой строки в {}: +cat hosts.txt | xargs -I{} ping -c1 {} + +# -P4 — параллельно (4 процесса): +cat urls.txt | xargs -P4 -I{} curl -O {}`) + + utils.Println(utils.ColorBold + "/dev/null и /dev/zero:" + utils.ColorReset) + utils.Code(`/dev/null — "чёрная дыра": запись выбрасывается, чтение → EOF +/dev/zero — бесконечный источник нулевых байт +/dev/random — случайные байты (медленно, использует энтропию) +/dev/urandom — псевдослучайные байты (быстро) + +# Типичные применения: +command > /dev/null 2>&1 # подавить весь вывод +dd if=/dev/zero of=file bs=1M count=100 # создать 100МБ файл +cat /dev/urandom | head -c 16 | base64 # случайный токен`) + + utils.Println(utils.ColorBold + "Подстановка команд (command substitution):" + utils.ColorReset) + utils.Code(`# Результат команды используется как аргумент: +echo "Сегодня: $(date)" +ls -la $(which python3) +mkdir backup_$(date +%Y%m%d) + +# Старый стиль (обратные кавычки): +echo "Версия: $(uname -r)" # backtick-форма устарела, используйте $()`) + + utils.Println(utils.ColorBold + "Полезные фильтры для pipe:" + utils.ColorReset) + utils.Command("grep", "фильтр строк по паттерну") + utils.Command("sed 's/old/new/g'", "замена текста в потоке") + utils.Command("awk '{print $1}'", "обработка/вывод полей") + utils.Command("sort", "сортировка строк") + utils.Command("uniq", "удаление дубликатов (после sort)") + utils.Command("head -n N", "первые N строк") + utils.Command("tail -n N", "последние N строк") + utils.Command("wc -l", "подсчёт строк") + utils.Command("tr 'a-z' 'A-Z'", "замена символов") + utils.Command("cut -d: -f1", "вырезать поле") + fmt.Println() + utils.Code(`# Практический пример — топ-5 процессов по памяти: +ps aux --sort=-%mem | head -6 + +# Все уникальные IP из лога nginx: +cat /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -20 + +# Подсчёт файлов по расширению: +find . -type f | sed 's/.*\.//' | sort | uniq -c | sort -rn`) + + utils.Footer() +} diff --git a/modules/linuxmodules/linux_sysconfig.go b/modules/linuxmodules/linux_sysconfig.go new file mode 100644 index 0000000..f928e6c --- /dev/null +++ b/modules/linuxmodules/linux_sysconfig.go @@ -0,0 +1,191 @@ +package linuxmodules + +import ( + "fmt" + "rubric/utils" +) + +var SysconfigModule = Module{ + Key: "sysconfig", + Aliases: []string{"cfg", "time", "ntp", "chrony", "настройка"}, + Title: "Конфигурация системы", + Description: "Темы 53–54: установка RHEL, настройка времени, NTP, chronyd", + Run: showSysconfig, +} + +func showSysconfig() { + utils.Header("Linux — Конфигурация системы") + + // ─── 53. Установка RHEL ─────────────────────────────────────── + utils.Section("53. Установка RHEL и первоначальная настройка") + + utils.Println("RHEL (Red Hat Enterprise Linux) — коммерческий дистрибутив.") + utils.Println("Бесплатные альтернативы: AlmaLinux, Rocky Linux (1:1 совместимы с RHEL).") + fmt.Println() + utils.Println(utils.ColorBold + "Получение RHEL:" + utils.ColorReset) + utils.Code(`# Бесплатная подписка для разработчиков (до 16 машин): +# https://developers.redhat.com/articles/faqs-no-cost-red-hat-enterprise-linux + +# Скачать ISO: +# https://access.redhat.com/downloads + +# Альтернативы без подписки: +# AlmaLinux: https://almalinux.org +# Rocky Linux: https://rockylinux.org +# CentOS Stream: https://www.centos.org/centos-stream/`) + + utils.Println(utils.ColorBold + "Первоначальная настройка после установки:" + utils.ColorReset) + utils.Code(`# Обновить систему: +dnf update -y + +# Настроить hostname: +hostnamectl set-hostname server01.example.com +hostnamectl status + +# Настроить часовой пояс: +timedatectl set-timezone Europe/Moscow + +# Включить автоматическую синхронизацию времени: +timedatectl set-ntp true + +# Добавить репозиторий EPEL (Extra Packages): +dnf install epel-release -y +# или для RHEL: +subscription-manager repos --enable codeready-builder-for-rhel-9-x86_64-rpms + +# Включить CRB (CodeReady Builder) — нужен для некоторых пакетов EPEL: +dnf config-manager --set-enabled crb # RHEL 9 +dnf config-manager --set-enabled powertools # RHEL 8`) + + utils.Println(utils.ColorBold + "subscription-manager — управление подпиской RHEL:" + utils.ColorReset) + utils.Code(`# Зарегистрировать систему: +subscription-manager register --username=myuser --password=mypass + +# Присоединить подписку: +subscription-manager attach --auto + +# Список доступных репозиториев: +subscription-manager repos --list + +# Включить репозиторий: +subscription-manager repos --enable rhel-9-for-x86_64-baseos-rpms +subscription-manager repos --enable rhel-9-for-x86_64-appstream-rpms + +# Отключить регистрацию: +subscription-manager unregister`) + + utils.Println(utils.ColorBold + "hostnamectl — управление именем хоста:" + utils.ColorReset) + utils.Command("hostnamectl", "показать всю информацию о хосте") + utils.Command("hostnamectl set-hostname myserver", "установить hostname") + utils.Command("hostnamectl set-hostname 'My Server' --pretty", "красивое имя") + utils.Command("hostname", "показать текущий hostname") + utils.Command("cat /etc/hostname", "hostname из файла") + fmt.Println() + utils.Println(utils.ColorBold + "localectl — настройка локали и раскладки:" + utils.ColorReset) + utils.Command("localectl", "показать текущую локаль") + utils.Command("localectl list-locales | grep ru", "русские локали") + utils.Command("localectl set-locale LANG=ru_RU.UTF-8", "установить русскую локаль") + utils.Command("localectl set-keymap ru", "русская раскладка для консоли") + utils.Command("localectl list-keymaps | grep ru", "доступные раскладки") + + // ─── 54. Настройка времени ──────────────────────────────────── + utils.Section("54. Настройка времени. NTP и chronyd") + + utils.Println(utils.ColorBold + "Типы часов в Linux:" + utils.ColorReset) + utils.Code(`RTC (Hardware Clock) — аппаратные часы (BIOS/UEFI), работают без питания +System Clock — системные часы ядра, синхронизируются от RTC при загрузке + +UTC vs LOCAL: +RTC рекомендуется хранить в UTC, чтобы избежать проблем с летним временем. +Отображение в локальном времени — задача ОС.`) + + utils.Println(utils.ColorBold + "timedatectl — управление временем:" + utils.ColorReset) + utils.Command("timedatectl", "показать время, часовой пояс, NTP") + utils.Command("timedatectl status", "то же самое") + utils.Command("timedatectl list-timezones", "список часовых поясов") + utils.Command("timedatectl list-timezones | grep Moscow", "найти московский пояс") + utils.Command("timedatectl set-timezone Europe/Moscow", "установить часовой пояс") + utils.Command("timedatectl set-time '2024-01-15 14:30:00'", "установить время вручную") + utils.Command("timedatectl set-ntp true", "включить синхронизацию по NTP") + utils.Command("timedatectl set-ntp false", "отключить NTP") + utils.Command("timedatectl set-local-rtc 0", "хранить RTC в UTC") + fmt.Println() + utils.Println(utils.ColorBold + "hwclock — работа с аппаратными часами:" + utils.ColorReset) + utils.Command("hwclock", "показать время RTC") + utils.Command("hwclock --systohc", "записать системное время в RTC") + utils.Command("hwclock --hctosys", "установить системное время из RTC") + utils.Command("hwclock --utc", "RTC в UTC") + fmt.Println() + utils.Println(utils.ColorBold + "NTP — Network Time Protocol:" + utils.ColorReset) + utils.Code(`NTP — протокол синхронизации времени по сети. +Иерархия серверов (stratum): + Stratum 0 — атомные часы, GPS + Stratum 1 — серверы напрямую подключённые к stratum 0 + Stratum 2 — синхронизируются от stratum 1 + ... + Stratum 16 — несинхронизированы + +Популярные публичные NTP-серверы: + pool.ntp.org — пул серверов (рекомендуется) + time.google.com — Google + time.cloudflare.com — Cloudflare + ntp1.vniiftri.ru — Россия (ВНИИФТРИ) + ntp2.vniiftri.ru — Россия`) + + utils.Println(utils.ColorBold + "chronyd — рекомендуемый NTP-клиент в RHEL:" + utils.ColorReset) + utils.Code(`# Установка (обычно предустановлен): +dnf install chrony # RHEL/Fedora +apt install chrony # Debian/Ubuntu + +# Управление: +systemctl enable --now chronyd +systemctl status chronyd`) + + utils.Command("chronyc tracking", "статус синхронизации") + utils.Command("chronyc sources", "список NTP-источников") + utils.Command("chronyc sources -v", "подробно") + utils.Command("chronyc sourcestats", "статистика источников") + utils.Command("chronyc makestep", "принудительно синхронизировать (мгновенный шаг)") + utils.Command("chronyc ntpdata", "NTP-данные каждого источника") + fmt.Println() + utils.Println(utils.ColorBold + "Конфигурация chronyd (/etc/chrony.conf):" + utils.ColorReset) + utils.Code(`# Серверы синхронизации: +server pool.ntp.org iburst +server ntp1.vniiftri.ru iburst +server ntp2.vniiftri.ru iburst +pool 2.rhel.pool.ntp.org iburst + +# iburst — отправлять несколько пакетов при первом контакте (быстрее) + +# Разрешить синхронизацию для подсети (NTP-сервер): +allow 192.168.1.0/24 + +# Синхронизировать RTC с системными часами: +rtcsync + +# Сохранять данные о дрейфе: +driftfile /var/lib/chrony/drift + +# Принять шаг > 1 сек только при старте: +makestep 1.0 3 + +# Применить изменения: +systemctl restart chronyd`) + + utils.Println(utils.ColorBold + "Настройка chronyd как NTP-сервера для локальной сети:" + utils.ColorReset) + utils.Code(`# /etc/chrony.conf на сервере: +server pool.ntp.org iburst +allow 192.168.1.0/24 # разрешить клиентам из этой подсети + +# На клиентах /etc/chrony.conf: +server 192.168.1.10 iburst # указать IP локального NTP-сервера + +# Открыть порт на файрволе сервера: +firewall-cmd --permanent --add-service=ntp +firewall-cmd --reload + +# Проверить что клиент синхронизирован: +chronyc sources`) + + utils.Footer() +} diff --git a/modules/linuxmodules/linux_tools.go b/modules/linuxmodules/linux_tools.go new file mode 100644 index 0000000..bfef1fd --- /dev/null +++ b/modules/linuxmodules/linux_tools.go @@ -0,0 +1,252 @@ +package linuxmodules + +import ( + "fmt" + "rubric/utils" +) + +var ToolsModule = Module{ + Key: "tools", + Aliases: []string{"t", "cockpit", "regex", "awk", "sed", "инструменты"}, + Title: "Веб-интерфейс и текстовые инструменты", + Description: "Темы 60–61: Cockpit, глоббинг, регулярные выражения, grep, sed, awk", + Run: showTools, +} + +func showTools() { + utils.Header("Linux — Веб-интерфейс и текстовые инструменты") + + // ─── 60. Cockpit ────────────────────────────────────────────── + utils.Section("60. Веб-интерфейс — Cockpit") + + utils.Println("Cockpit — веб-консоль для администрирования Linux через браузер.") + utils.Println("Позволяет управлять сервисами, сетью, дисками, контейнерами и логами.") + fmt.Println() + utils.Println(utils.ColorBold + "Установка и запуск:" + utils.ColorReset) + utils.Code(`# RHEL/Fedora (обычно предустановлен): +dnf install cockpit +systemctl enable --now cockpit.socket + +# Ubuntu/Debian: +apt install cockpit +systemctl enable --now cockpit.socket + +# Открыть порт в firewalld: +firewall-cmd --permanent --add-service=cockpit +firewall-cmd --reload + +# Доступ: https://hostname:9090 +# Войти с логином/паролем системного пользователя`) + + utils.Println(utils.ColorBold + "Расширения Cockpit:" + utils.ColorReset) + utils.Code(`# Управление виртуальными машинами: +dnf install cockpit-machines + +# Управление Podman-контейнерами: +dnf install cockpit-podman + +# Управление хранилищем (LVM, RAID, Stratis): +dnf install cockpit-storaged + +# 389 DS (LDAP): +dnf install cockpit-389-ds + +# Обновления пакетов: +dnf install cockpit-packagekit + +# Применить все расширения: +systemctl restart cockpit.socket`) + + utils.Println(utils.ColorBold + "Возможности Cockpit:" + utils.ColorReset) + utils.Code(`Dashboard — обзор системы: CPU, RAM, диски, сеть +Services — управление systemd-сервисами +Storage — диски, LVM, RAID, Stratis, NFS +Networking — интерфейсы, маршруты, firewall +Accounts — пользователи и группы +Software Updates — обновление пакетов +Terminal — встроенный терминал в браузере +Logs — journald логи с фильтрами +Podman — управление контейнерами +Machines — виртуальные машины (KVM/libvirt)`) + + utils.Note("Cockpit работает в браузере, не требует постоянного подключения: сессия = одна вкладка.") + utils.Note("Порт 9090. Сертификат самоподписанный — нужно добавить исключение в браузере или подключить Let's Encrypt.") + + // ─── 61. Глоббинг и регулярные выражения ───────────────────── + utils.Section("61. Глоббинг и регулярные выражения") + + utils.Println(utils.ColorBold + "Глоббинг (Globbing) — шаблоны оболочки:" + utils.ColorReset) + utils.Code(`* — любое количество любых символов (кроме /) +? — ровно один любой символ +[abc] — один символ из набора +[a-z] — один символ из диапазона +[!abc] — один символ НЕ из набора +{a,b,c} — одно из перечисленных + +# Примеры: +ls *.log # все файлы .log +ls file?.txt # file1.txt, fileA.txt... +ls [0-9]*.conf # начинающиеся с цифры +ls /etc/{nginx,apache}* # /etc/nginx* или /etc/apache* +rm backup_{2023,2024}*.tar # удалить бэкапы 2023 и 2024 +cp /etc/*.{conf,cfg} /tmp/ # все .conf и .cfg + +# Расширенный глоббинг (shopt -s extglob): +?(pattern) — 0 или 1 вхождение +*(pattern) — 0 или более ++(pattern) — 1 или более +@(pattern) — ровно 1 +!(pattern) — всё кроме`) + + utils.Println(utils.ColorBold + "Регулярные выражения — базовые (BRE):" + utils.ColorReset) + utils.Code(`. — любой символ +* — 0 или более предыдущего +^ — начало строки +$ — конец строки +[abc] — один символ из набора +[^abc] — один символ НЕ из набора +\(abc\) — группа +\{n,m\} — от n до m повторений + +# Примеры: +grep '^root' /etc/passwd # строки начинающиеся с root +grep 'bash$' /etc/passwd # строки оканчивающиеся на bash +grep '^$' file.txt # пустые строки +grep '[0-9]\{3\}' file.txt # три цифры подряд`) + + utils.Println(utils.ColorBold + "Регулярные выражения — расширенные (ERE):" + utils.ColorReset) + utils.Code(`+ — 1 или более предыдущего +? — 0 или 1 предыдущего +| — ИЛИ +(abc) — группа (без \) +{n,m} — от n до m повторений (без \) + +# Использование ERE: grep -E, egrep, sed -E, awk + +grep -E 'cat|dog' file.txt # cat или dog +grep -E '^[0-9]+\.' file.txt # строки начинающиеся с числа. +grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}' file.txt # IPv4-адрес +grep -E 'error|warning|critical' /var/log/syslog + +# Полезные классы символов: +[[:alpha:]] — буквы (a-z, A-Z) +[[:digit:]] — цифры (0-9) +[[:alnum:]] — буквы и цифры +[[:space:]] — пробельные символы +[[:upper:]] — заглавные буквы +[[:lower:]] — строчные буквы +[[:punct:]] — знаки препинания`) + + utils.Println(utils.ColorBold + "grep — поиск по шаблону:" + utils.ColorReset) + utils.Command("grep 'pattern' file", "базовый поиск") + utils.Command("grep -i 'pattern' file", "без учёта регистра") + utils.Command("grep -v 'pattern' file", "строки НЕ совпадающие") + utils.Command("grep -n 'pattern' file", "с номерами строк") + utils.Command("grep -c 'pattern' file", "количество совпадений") + utils.Command("grep -l 'pattern' *.conf", "только имена файлов") + utils.Command("grep -r 'pattern' /etc/", "рекурсивно в директории") + utils.Command("grep -A 3 'pattern' file", "3 строки ПОСЛЕ совпадения") + utils.Command("grep -B 2 'pattern' file", "2 строки ДО совпадения") + utils.Command("grep -C 2 'pattern' file", "2 строки до и после") + utils.Command("grep -E 'pat1|pat2' file", "расширенные регулярки") + utils.Command("grep -P '\\d+' file", "Perl-совместимые regex") + utils.Command("grep -o 'pattern' file", "только совпадающая часть") + utils.Command("grep -w 'word' file", "только целые слова") + fmt.Println() + + utils.Println(utils.ColorBold + "sed — потоковый редактор:" + utils.ColorReset) + utils.Code(`# Синтаксис: sed 'команда' файл +# -i — изменить файл на месте +# -E — расширенные регулярки + +# Замена (s — substitute): +sed 's/old/new/' file # первое вхождение в каждой строке +sed 's/old/new/g' file # все вхождения (global) +sed 's/old/new/gi' file # без учёта регистра +sed 's/old/new/2' file # второе вхождение + +# Разделитель можно менять (удобно для путей): +sed 's|/old/path|/new/path|g' file +sed 's#/etc#/conf#g' file + +# Изменить файл на месте: +sed -i 's/old/new/g' file.conf +sed -i.bak 's/old/new/g' file.conf # сохранить бэкап .bak + +# Удаление строк: +sed '/pattern/d' file # удалить строки с паттерном +sed '5d' file # удалить 5-ю строку +sed '2,10d' file # удалить строки 2-10 +sed '/^$/d' file # удалить пустые строки +sed '/^#/d' file # удалить комментарии + +# Вставка и добавление: +sed '3a новая строка' file # добавить после строки 3 +sed '3i новая строка' file # вставить перед строкой 3 +sed '$a последняя' file # добавить в конец + +# Вывод конкретных строк: +sed -n '5,10p' file # напечатать строки 5-10 +sed -n '/start/,/end/p' file # между паттернами + +# Несколько команд: +sed -e 's/foo/bar/' -e 's/baz/qux/' file +sed 's/foo/bar/; s/baz/qux/' file + +# Практические примеры: +# Удалить комментарии и пустые строки: +sed '/^#/d; /^$/d' nginx.conf + +# Заменить IP во всех конфигах: +sed -i 's/192\.168\.1\.100/10\.0\.0\.1/g' /etc/nginx/*.conf + +# Добавить строку после первого совпадения: +sed '/\[global\]/a log level = 2' /etc/samba/smb.conf`) + + utils.Println(utils.ColorBold + "awk — обработка текста по полям:" + utils.ColorReset) + utils.Code(`# awk обрабатывает текст построчно, разбивая на поля. +# По умолчанию разделитель — пробел/таб. + +# Поля: $1 $2 $3 ... $NF (последнее), $0 (вся строка) +# NF — количество полей, NR — номер строки + +# Вывод конкретного поля: +awk '{print $1}' file # первое поле +awk '{print $1, $3}' file # первое и третье +awk '{print NR, $0}' file # с номерами строк + +# Другой разделитель (-F): +awk -F: '{print $1}' /etc/passwd # имена пользователей +awk -F: '{print $1, $6}' /etc/passwd # имя и домашняя директория +awk -F, '{print $2}' data.csv # второй столбец CSV + +# Условия: +awk '$3 > 1000' file # строки где 3-е поле > 1000 +awk '/pattern/ {print $0}' file # строки с паттерном +awk '$1 == "root"' /etc/passwd # строки где $1 = "root" + +# Вычисления: +awk '{sum += $1} END {print sum}' file # сумма первого столбца +awk 'END {print NR}' file # количество строк (= wc -l) + +# BEGIN и END блоки: +awk 'BEGIN {print "Начало"} {print $1} END {print "Конец"}' file + +# Переменные и форматирование: +awk -F: '{printf "%-20s %s\n", $1, $6}' /etc/passwd + +# Практические примеры: +# Топ процессов по CPU: +ps aux | awk 'NR>1 {print $3, $11}' | sort -rn | head -10 + +# Сумма размеров файлов (ls -l): +ls -l | awk '{sum += $5} END {print sum " bytes"}' + +# Уникальные IP из лога nginx: +awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn + +# Обработка CSV: +awk -F, 'NR>1 && $3 > 100 {print $1, $2}' report.csv`) + + utils.Footer() +} diff --git a/modules/linuxmodules/linux_users.go b/modules/linuxmodules/linux_users.go new file mode 100644 index 0000000..7872d3f --- /dev/null +++ b/modules/linuxmodules/linux_users.go @@ -0,0 +1,223 @@ +package linuxmodules + +import ( + "fmt" + "rubric/utils" +) + +var UsersModule = Module{ + Key: "users", + Aliases: []string{"u", "perms", "sudo", "права"}, + Title: "Пользователи, права и sudo", + Description: "Темы 17–20: su, sudo, пользователи, группы, права на файлы", + Run: showUsers, +} + +func showUsers() { + utils.Header("Linux — Пользователи, права и sudo") + + // ─── 19. Пользователи и группы ─────────────────────────────── + utils.Section("19. Пользователи и группы") + + utils.Println("В Linux каждый файл принадлежит пользователю и группе.") + utils.Println("Каждый процесс запускается от имени определённого пользователя.") + fmt.Println() + utils.Println(utils.ColorBold + "Основные файлы пользователей:" + utils.ColorReset) + utils.Code(`/etc/passwd — список пользователей +/etc/shadow — хэши паролей (только root) +/etc/group — группы + +# Формат /etc/passwd: +# имя:пароль:UID:GID:комментарий:home:shell +alice:x:1000:1000:Alice Smith:/home/alice:/bin/bash +root:x:0:0:root:/root:/bin/bash +# x — пароль в /etc/shadow +# UID 0 — root (суперпользователь) +# UID 1-999 — системные пользователи +# UID 1000+ — обычные пользователи + +# Формат /etc/group: +# имя:пароль:GID:члены +sudo:x:27:alice,bob +docker:x:999:alice`) + + utils.Println(utils.ColorBold + "Информация о пользователях:" + utils.ColorReset) + utils.Command("id", "UID, GID и группы текущего пользователя") + utils.Command("id alice", "информация о пользователе alice") + utils.Command("whoami", "имя текущего пользователя") + utils.Command("groups", "группы текущего пользователя") + utils.Command("getent passwd alice", "запись alice из /etc/passwd") + utils.Command("getent group docker", "участники группы docker") + fmt.Println() + utils.Println(utils.ColorBold + "Управление пользователями (root):" + utils.ColorReset) + utils.Command("useradd alice", "создать пользователя") + utils.Command("useradd -m -s /bin/bash -G sudo alice", "с домашней директорией, оболочкой и группой") + utils.Command("passwd alice", "установить пароль") + utils.Command("usermod -aG docker alice", "добавить alice в группу docker") + utils.Command("usermod -s /bin/zsh alice", "изменить оболочку") + utils.Command("usermod -L alice", "заблокировать учётную запись") + utils.Command("usermod -U alice", "разблокировать") + utils.Command("userdel alice", "удалить пользователя") + utils.Command("userdel -r alice", "удалить с домашней директорией") + fmt.Println() + utils.Println(utils.ColorBold + "Управление группами:" + utils.ColorReset) + utils.Command("groupadd developers", "создать группу") + utils.Command("groupdel developers", "удалить группу") + utils.Command("gpasswd -a alice developers", "добавить alice в группу") + utils.Command("gpasswd -d alice developers", "удалить alice из группы") + fmt.Println() + utils.Note("После добавления в группу пользователь должен перелогиниться. Или: newgrp groupname") + + // ─── 20. Права на файлы ─────────────────────────────────────── + utils.Section("20. Права на файлы") + + utils.Println(utils.ColorBold + "Структура прав доступа:" + utils.ColorReset) + utils.Code(`ls -l file.txt +-rw-r--r-- 1 alice users 1024 Jan 15 10:00 file.txt +│└──────────┘ +│ 9 бит прав +└ тип файла (- файл, d директория, l ссылка...) + +Права разделены на 3 группы по 3 бита: +rwx rwx rwx +│ │ └── other (остальные пользователи) +│ └─────── group (группа владельца) +└─────────── owner (владелец) + +r — read (чтение): 4 +w — write (запись): 2 +x — execute (выполнение): 1 +- — нет права: 0 + +Пример: rw-r--r-- + owner: rw- = 6 (4+2) — чтение и запись + group: r-- = 4 — только чтение + other: r-- = 4 — только чтение + Численно: 644`) + + utils.Println(utils.ColorBold + "chmod — изменить права:" + utils.ColorReset) + utils.Code(`# Числовой (восьмеричный) способ: +chmod 644 file.txt # rw-r--r-- +chmod 755 script.sh # rwxr-xr-x +chmod 600 private.key # rw------- +chmod 777 dir/ # rwxrwxrwx (небезопасно!) +chmod 750 script.sh # rwxr-x--- + +# Символьный способ: +chmod u+x script.sh # добавить execute владельцу +chmod g-w file.txt # убрать write у группы +chmod o-r secret.txt # убрать чтение у остальных +chmod a+r public.txt # добавить чтение всем (a = all) +chmod u+x,g-w file # несколько изменений +chmod go=r file.txt # установить группе и остальным только r + +# Рекурсивно: +chmod -R 755 /var/www/html/`) + + utils.Println(utils.ColorBold + "Типичные значения прав:" + utils.ColorReset) + utils.Code(`644 rw-r--r-- обычный файл (конфиги, тексты) +755 rwxr-xr-x исполняемый файл, директория +700 rwx------ личный скрипт/директория +600 rw------- приватный ключ, .env файл +640 rw-r----- конфиг с секретами (owner + group) +664 rw-rw-r-- файл для работы в группе +1777 rwxrwxrwt /tmp (sticky bit)`) + + utils.Println(utils.ColorBold + "chown — изменить владельца:" + utils.ColorReset) + utils.Command("chown alice file.txt", "изменить владельца") + utils.Command("chown alice:users file.txt", "изменить владельца и группу") + utils.Command("chown :users file.txt", "изменить только группу") + utils.Command("chown -R alice:alice /home/alice/", "рекурсивно") + utils.Command("chgrp users file.txt", "изменить только группу") + fmt.Println() + utils.Println(utils.ColorBold + "Специальные биты:" + utils.ColorReset) + utils.Code(`SUID (Set User ID) — 4000: + Файл запускается с правами владельца файла, а не запускающего. + chmod u+s /usr/bin/passwd # или chmod 4755 + ls -la: -rwsr-xr-x (s вместо x у владельца) + Пример: passwd изменяет /etc/shadow (root-файл) + +SGID (Set Group ID) — 2000: + Файл: запускается от имени группы файла. + Директория: новые файлы наследуют группу директории. + chmod g+s /shared/ # или chmod 2755 + ls -la: drwxrwsr-x + +Sticky Bit — 1000: + Директория: файл может удалить только его владелец. + chmod +t /tmp/ # или chmod 1777 + ls -la: drwxrwxrwt + Применение: /tmp, /var/tmp`) + + utils.Println(utils.ColorBold + "umask — маска прав по умолчанию:" + utils.ColorReset) + utils.Code(`umask определяет права, которые НЕ назначаются новым файлам. + +umask # показать текущую маску (обычно 0022) +umask 0022 # установить маску + +# Как работает: +# Файлы создаются с 666, директории с 777. +# Umask 022 вычитается: +# 666 - 022 = 644 (файлы: rw-r--r--) +# 777 - 022 = 755 (директории: rwxr-xr-x) +# Umask 077: +# 666 - 077 = 600 (файлы: rw-------) +# 777 - 077 = 700 (директории: rwx------) + +# Установить постоянно в ~/.bashrc: +umask 0027`) + + // ─── 17–18. su и sudo ───────────────────────────────────────── + utils.Section("17–18. su, sudo и visudo") + + utils.Println(utils.ColorBold + "su — Switch User:" + utils.ColorReset) + utils.Command("su -", "переключиться в root (login shell, нужен пароль root)") + utils.Command("su", "переключиться в root (без login shell)") + utils.Command("su - alice", "переключиться в alice") + utils.Command("su -c 'команда' alice", "выполнить команду от имени alice") + fmt.Println() + utils.Code(`Разница su vs su -: +su — только смена UID, переменные окружения остаются +su - — полноценный вход, загружается окружение пользователя + (PATH, HOME и т.д.) + +Выйти из su: exit или Ctrl+D`) + + utils.Println(utils.ColorBold + "sudo — выполнить как другой пользователь:" + utils.ColorReset) + utils.Command("sudo command", "выполнить команду как root") + utils.Command("sudo -u alice command", "выполнить от имени alice") + utils.Command("sudo -i", "интерактивная сессия root (= su -)") + utils.Command("sudo -s", "оболочка root с текущим окружением") + utils.Command("sudo -l", "показать разрешённые команды для текущего пользователя") + utils.Command("sudo -l -U alice", "разрешённые команды для alice") + utils.Command("sudo !!", "повторить последнюю команду с sudo") + fmt.Println() + utils.Code(`sudo кэширует аутентификацию на 15 минут (по умолчанию). +sudo -k — сбросить кэш (следующая команда потребует пароль)`) + + utils.Println(utils.ColorBold + "visudo — редактирование /etc/sudoers:" + utils.ColorReset) + utils.Code(`# НИКОГДА не редактируйте /etc/sudoers напрямую! +# visudo проверяет синтаксис перед сохранением. + +sudo visudo + +# Формат правил: +# WHO WHERE=(AS_WHOM) WHAT + +# Примеры /etc/sudoers: +root ALL=(ALL:ALL) ALL # root имеет все права +%sudo ALL=(ALL:ALL) ALL # группа sudo — все права +%wheel ALL=(ALL:ALL) ALL # RHEL: группа wheel + +alice ALL=(ALL) ALL # alice — все команды +alice ALL=(ALL) NOPASSWD:ALL # без пароля (небезопасно!) +bob ALL=(root) /usr/bin/apt # только apt от root +netadmin ALL=(root) /usr/bin/nmtui # только nmtui +helpdesk ALL=(root) /usr/bin/passwd, !/usr/bin/passwd root # пароли кроме root + +# Файлы из /etc/sudoers.d/ включаются автоматически. +# Лучше создавать файл там, а не редактировать sudoers: +sudo visudo -f /etc/sudoers.d/alice`) + + utils.Footer() +} diff --git a/rubric b/rubric index a8755e451bfcf508d8e848c1a8fb668464bc571a..6ce49a8616111c3fc0138ff032faae0cc6f6b3bf 100755 GIT binary patch delta 536213 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

^FHsI=#6m?j2>8c4| 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

mf94St;P_3(8oN(si}F#FB(amaJPFZcm} zUIjeRPGEV?6nJ^m`+Ca?B15bOt|9dj(*-Smz+u>4mQEFA-kn zC+tyC%y?1V40zWUPR2cLT(od{lT(>tixmW9CXZ0%I`_m-XnMZRrjA|^It;y z=YTf=r5xis8TI)X8@|TAl<=1c=e=AQ-)Rg8$Fn(=gxlBX&G@i>!9T_Iurk&+a=7+c z`cL>+0luo#w$r)h97}u|xP3e@x^$k5{p5(3qkHqkFXLG%dvBFp>Fl@gmao88obkTv z74)YnoX2}dES&SL>zWw)jL%*p#xtkV*|vtSKh$~ONnPvfRi9$*M+|81LVe9IbcU>r zUZa@5)))Dk=DWeK>Gs#@Gbi1bIH1zWU1trsvK}Mnl$^H?F4`e7;pE#Q`_~B<3oD(j zuRw!hA6 zf4{^xGtOJ8-mgP{r)7Vy*ZxAn&6a{n|nT z_P;gboEDYqG3@kSnI7QxgMB~Mg-+i$FqXESi5tgd=^MhX!Rh_K*a}p}!dbsyLwx;G zi5Ifpcj8@Xuz!4mZ(F?OdHvsgxtYH^ zUAIOvcl_3>Gk1-V!NvHWA!9Dg=YCj?KOe%MIR5S@+#Z#ozw1$@5MWe#Z)4nCOrL7u zxG1-f@D<>hlU6gT{I=;sgxi~xmsy{WaQPnrKejpgwp^n>TyKPz5>7wp+sJy`x#oCR ze#A$J!^~HI=p#g#cj&MISPYg~fW9b;aR6bnc^{+MIKwzE7S8*j{jqRf;Cg=&-~Pf+ zq6dIaK0%fip<6RiC_E)x({)EIhPnT$CI$Y5w&JBgHF)ps@%0yONBdPRY~0tM2`_`s zd)e=!TvLjTD|8Azh5dfVaGr=l{Ts_Q9}G(gugZU37>|D{+F!x?-2PQN5Wmgf$xYf# zNU^&Lo!1DrUp%^<^~t|GE_Sj$qxiRro~Q1${6qYweTMe!DMWps4^N>Tgdc{EJdd4$ z_8%>Da(BYMt*`#naiIR=e!~2n(6{@a!#FR@hjxni_`P`k=g<#;H<|f!xL$(x@kcYB z{9GIeH~;Az0?*T??os4mmj4BC`ySl^wn=@)J-VfY9|bSvxbBP5e@0L1O2RXNnZ@4V zoYMtg0&fjm>N8$i4St+(d(3*UAAGHH$S&Zc!JEwdnOyUjtsGk0H1n@e8oK1wk4Bkc*Iv?B4c)daH zn$)};`1Zs^bpT}rZ@|b7-=m#U?l~COXiy{3`Jmi)mUXmsd9A+wEANgfc>ns^*C#8p z2K+^-Kzli;sXgj14r5*Sz@PM_M7(TH^T%?X4S(_SoCh z@h|nY$KKyS-@YeHZPTY4?DrnzEGFE}mjkTN`BeE0{Il`)wRQW97wm=pSn#H!P`ry7 z@1x`W9O3lRsq$33d=2?}5H+<=`HaJK@;=z7d(!8mY5oAN86QEooiC(IA6`S(?1Oz9 zpTPQq(f-ImPW}C2jht)YSR-$d_*O6eiNp^w&e!vDzZLB_t)u%vINF~__yF+C_zY#7 zuIHis@4tnA_BLdlr4PLS0pY*y{fQG~ANTy9llV^7r~X4f^*f<|)N6nIcfx;TpX0j; zxcghTlvD6*E}qeEaEjCDdyI*FTrfIxTtH4wB;3xK9?&Hj-otEi_3``%ozNIv3vd3P z7-P;`vnhnz_Kgj;zwJNhlluZowA;QBo>TC)-|-;u?aw1u#r;m|GhG}x2>X+vGZV!R z{Y9upBc9y;?t|DW)9-;dgFhAcu2Y=0KS0NA^JVXGg?+k2*CZ*+F;? zc>Pc|1E1i%Rx zkTc_Fny28Id2Diy@M(jbJ=NfSe}R4>^vxeyF#0r4?;PYj`3u?~ZrLA;?<7NbXpnQ9 z@I~Mm|5h-55AcP9oU0DQ{!Z|We|s6{b>KC^ZToinj}3CNevQ+=rGuPlzedkdUi($V z(%9lyHmbx}CDl(<4NwX(mKUHVnJ@J*X(Hh?S0;l$2lz}czKL*p;r-L#uLd6W;?0i$ zUoaIpnt|gu@O0EdQ6fXr+YH+C{%Eqq#6O!#Q*mZ61YuN(1c+`9q&&7@rk`oc!N7KQn>npv{~H&OGos z&^i(TZzy=%Q3npBs!K1!6-EAhHYiDbh4QWQ({H|v;E(uft^T;C7 zqtt+Ua*|T@w3(zoz^ipxlB$P7`U{$1sc1q!HA8y+l&T)F?DT`o5R{itjGc6CCzv$m z@+5T&$}|)*6mAONo8sOl>hdG0>NU&I4#@09@n7*5LrK0NNvah}Cls?tx(!WIXQP~tLWWYZ6V*-_YJfVNnx<-A9u4MZ$m~G5f7oB` zoPKqZIuGR{6tZ(c%S2Vy9OwV2{Y}zTC$badQTYQxwTCCETTw)alCHQWNsUAqheC!* zS|bBm;FY7O%UhbLgqV^b4Nt&m?7H--cKmMp%{mPA6ZQvyk-(l@wH0jY?9Z zP{`1P4p{HAm70z^a8{an$1>F5x+K*SWd(|H$Qb%~bdvfv%03jbV}@*3XGG|NH1!|L z&P~@RsXI{qM5#gXr>r)Hn%|J5I-=yFm=IBf>U2Yd3e!}BE23k+1~MB_?jQSChmMa+ zQmNyURDBe(Q>QyN4lR{xin?TY8WNc8(D;`_=nzWLjej*XYeJHG2<1@}+o2^r;Lr_e zYCH@DIEPwZf|-HR?4~4zKDiykhJ-$~ZUp}}6#C3WZB~|`yQc6zdTBxE$EB$UjE7LT z00sx6j7Kq{@8z0ONe*~Vp}c}ZhfA{@Ey=@dxiL-s)3Wm+WWGdcKQUq_7zzDLU~WL! zghD+v^LHx@g^JSDmzJT7Nk~4F=TVG9W(b!TC8-xtUPU20=k&yy-wJCo>M&ktku)Sa zgcsk8`G4ijN$Ob?X{i4#ShY|_px6!_>;;GJN>iOJLoY!ljB?)J{%Yr($w{goN+Al_ zG1GU#IdCX=Z<-on8TuGPU!ior^{yVn)X*F@bRl?yP_9Fv2{s-2C2(#5>cI19>SEY2J-q`mb5R~fF&$mT9sMa- zLoEvecoF3}6npc$5ytGEhGBT5Wq2Lrcc2_WF@|yNfj+eY(-8%fhfwZAp$Kk=J&NEl zVK?Ysou*2yp3@kwhtlULCWPl}!!gHrzy;{}D`_fhIoRP&3?E7%ig6GR=+dXwWbi^L z^Y6s?-;XcUbNZW*o8jSH7_)m`vL;RKv>aRx`PC@@L_r3)V?4pNs}kP?ZyO42k?HXa z`ed(7Q-|2G3qXHLGOs79{iu`ZaAPG&t)IdC6NNrWcWKAWa~|Z>bJ**dh4YD#qk5Loxuy>>&xgou&eogES;(!e}oPGbA@?2df+s^-h|aq8$sW3m`~i zk`LvJEzibj1OL^KgkX5S<=7RlHyY&z6yw-R!u0 zk;i~nUu{fN+bsP@ptl93W(Wm(GckU3wSLko;B9JyfBrIxUY51aD!x(=q#(3nc*xs?klUYu0gUh>4dLg6MQiT z1{KEe`OySUK~ze^WakM8)WjG39{%GKz6@9CBk(dvi4NRUXb~f85#T7S5R-vNT4Xlt zL<$sI`W*1$s=`Y@a&2bAvq@g?Bl=~Kw;ERELjQ%#3p-JFcd{JG5^bgm>F0n)y(~m8 zTO?#QtN{V%LHe=|oPqe_nlLUKQ`{xD3#4vLkY>#=0+sm4X_*;rc&L}uGPmx01d%4` zjiPQ8L7*4{b5M$W$<7ICbP;S&zb(y(-RG(t7?{|OjugNV3!V0G^=k*x8^*O?iu$b<|3m9YUsn--aNexw#D z{{#>j2f=r`C1GS&SR+d<&>&Hn+9cVzmINpWrjwf?&=Vk)KqDj`3FKG;iy$x-AeAr# z-XsAU8DoKRJ{zFvwQGUGWCT(eGy*MZB3YSI!1ulo%K|u9HrNNfj!CpqP zBjR;3O>xTgQ!^W8RME5!wY%n_9r{pUsLl2$MHtN=VWLTq73$RxCzfP$+KhN;eh_Cpr(g zG7zWXq+(>=OhEuh*-l0Rjlho(xWw;+%f~(AsWyX7f!0w72Y{Q{bGIV~i_z60$WZBt zwR2!?TEY=~TEg65gdss%>1Przr3ZU>$bPj$|TF}96DpF(}lvbk3%L#Sg_0TBULT4UnQA->DF8JS+y^>Y|i$ zS~Nn;(05e?!2p!0WMkmVgd)<<{gB52e4_$6XA%rFp%#t6Y6uhpq_Pu1eF6eOeEEyT zJP6Qd=kK1NsRM#OD(I9yyz-fXZZGJbf1C)~qoVo=fuVvPE9j|$o+Ic*f?gr$b$-PKBn=I)QHnT}T*;Y7~Tr zSXiTsWHnaM>jX^)3|oFE=&7(Z7Ud|D7V`3%X3u z<$|sdG~TxBehLLYa3bgpS&w; zS|kMiulHQHr*GGg0~Nx7Q+Uk&PkTlQTYbkc|BFS#C4ycp=&+#61YIuZ3PJPrGnGwz zx?N{H%@KlrK^F=-Am}1NhXh?L=n~ML`M+8SgautD=yE|<2)Z#3VG&kPd;JJSX+8go zqYOQ*1if0&VL_J(x~jdi?SP6niuhBKq(>N<&K7izp#6d_6m&q)MS>0)n#P|TC^ihH zO9Z`I&|yKB3A$X+6@sSyGkt>ASZGH?C`$zWzdRJ^zwj(w(Ak2{5wu^>g@O(Uy2wLg z{)aq_|Cfg%31gq(49dvN2vQoHeB%DE=dGTJ@uT&BGg!D`;6^}hn#5Ksn-N&i{!OACto4FI3VcuFzAOdD&*x@FMaQ| zO)}SB+obVLzXs`SuRePk`vdj01xb)VcV6fN8=X5cphy|3}~l1%3${W&1%z z4GaLoZs7T-fQzpbcq0Uk4Y;@uw5@-Wz$XfPM+C=$LJoW;1e#*F?FO2GrUu}Ldo2N# z`#G6tErFzM>v7N#XM+gmF(L4$EdYEtTD1*a13F>=_730)tdi2+P{yJR9f0^BJ#|zQ{42)MZ~UOushOJ9E%*f5vTc-rHa5sIa#ixiM-DU-e8mxm(o2Zk6Z9G9i9=7GEmt_g z7l~2pXN{Vh7E6V|6P5t=a4Sa5cjeI)z%LQ0g5Qlq^r_ippzVIV z5|!7xnl+XJHP}d`l24@4B7r|D@Y*8PQbno_1Fapxu7(=KqpqF^;K|lV4+xKQTz2)V zJ1oas^5|j=g=heBwO4|ZnwpjG4#~g8Y~2mo9+J*tNV8m~#1JhP5igBIoQLE;Lf~LTKo8mf^iX_`h;U?cgZAAqt#0rB zg)o4(#Ce8@608q+^r1ET>}ZHx`}XG2-dj@puD}TqV!E?x=fDjj#A5}%LEvu+ypf2o zPe)ka*UEJgXtP1N`3U^6r|+|%?T$SM+V-oq=yIy zBJd%i<5!A~zbEj`0*?j;V?jg1kwHK8Y_<1^v^>lbk(@1Zb)UfZ3p{2nn_OHYj)iNj zV<9Lx;S+IKm%Q?oi%yA7u^aod+2BI`f1vYv)WY_qG|Wd~IwkrO_V6ETlD$P?=P4x#^< z(9aV&a;7Iou-{rJhSjl#m3nj#v>kz(VwjVyVJ3OG-)bX9r>#9Yv<(jmfsidgJrww7 z7ETR1)_#m4@_cl--O*l2qs_C5@S51KnORob-G+nVro(M+dd6GWsJ*RNr|f|26YJQ1 zYaJu`|6-X5y1R&h7(%;&>%|a{5knkri|wX}NP*9+6d(szVgz-2&bG9ywl{4>fbI78 zi2>Me4FK6cM+E#_5%7fqrvak@!PHSXbbtz0yMHA&|C>`Aax2!6nNor5O~UblyQw!z zv%~>qwm6{d6Zn3C4-v zyTMr^5oVi2FbAl6#ab}OS_|Av68L8p?ha8TlX!Or+DtW?Y5AaODI7{HOHSV_WIfw@SGqXg#wG(tNPvz_?f&as8~OJSOe%ZGt36(c#mt&Cde>HJt!C7rcqet_ zz(Gt3+kxmV4E++DFtWE$Od2OLX)q{ca4VA9HdrZ={)my(6%o> z2>g)1M<6{c{h+!Q4BNm4uYh_};P`R3Z9ugU>G7bziv|9p2gmlKLI_+h7TGakk)_ig zs|PA9@Ob$~!;9Z~x)DdeRNIp~_)ykVckv|C)2{?YC*F2krwaV`D6S7aJB7gKQ2}=$ zxmfhOzvy?oiz(FaLy)&Kt!8B2VV=>%OpZ)EUWy|E8XsffWN?C*m+=lp6v2IB-tIT^ zmKI+UxKJFO^3BnS@znx<(Zb20KSA3)JXK8e`qo6J_Qo>qF8&mOaYEotVIVBJ!?bqQmx$0k=K)Z%25R?x1U)`bVpR2_VVKEnf6c z0y)TAM-qKP`w^1dZlIR%H--Flo6{qBgTTiM{5^qh7I?eJ9KaxvNA0aiKs~67q_-XN z-kbdEt;wL6G$Cu!P|AHP@B;=PhF(#F(Nk>Q!yPH!9Q_Qmi2%tT!XD9fu#q?|@ufPO z(z9MlOuEvUc52o(s{7Z^%Bw#O$$kskT*c8WzS5arKWkoY68LnuA&fr7Oh2nh6+^E> zJUu>Xao{C#`F z(n8?2aOFr=e+bCdJXe=&;Zp;D>)iTisI}p-BvnDW8S43f*)GZh1#9?pBpzwd$896A zMwh6ZffBn}JjJ@XM%Q(%Mva>IoT+)u$(qZknVg(_uB)6-17G#W8CjW@9bAql+i+eJ zdJ;9xXTl5c{Xsm+^$=ltY_<2OhFCZpEhzkD1Lx_}66yCxUY7d1DD4p<~3VrX08pRJoAryrM z{3s#lhftS5&)*D@1MR1?%rwZOsJ{cJmF0QxDcXy%MEaita|x7Q0szm|!{DKWX$K20 zL${-zh8jiTyZ=snM{oQnAq<^D@uLLt5PIq%y^{>Xp)N&@dz|Gz1OElGxOo=149-y0 z@V(?gL@9U##9=6*Wd8~ys6%xDz<9}xFj$E(1wZsD|MBalOTsyh~~@ZBJ~!Pu!Vjz$!O!f3z`fe@5b4`6Vl#t~YDceg5pt{m?Z48hToQpmxnF!cNn zzy>*p4W%C?gc3$6$Iz%8IQw@r3_OI+`N^rffuRGz5We_PvX28qufmi_ze4DF(2MZ> zITXCiGw?7BoQ0AFgUDPzrjmLLMm~oQW=jY~VHPPraLD+9g|hJ-(=Cj~1M{E@oiOQP zW`${i8&2boo+>OT{yV^=>4j+)M)Bi&2)q!mFp5G}D}=4&8#wzfeBX+fl=IHrWe) z1*NTELRmqu9LBTvK>?qcw$c2J-bB7M~U$1(o?m0;pam;_)T3_673FG2kTcr^Y?Q6S@|8V!V3;QN!n z(MX8opyx-UerlYY0pCvz;Cq;yA-j+ZLnll&QTxf^#h8R4d$GBUb`wP<;vdN66rN=qt#-2kbw< z-bX=Bg;9sM0{aOV$^QU+Bjkgd0c?UY>TD!SU^kdB6s~{}l*(Z!0K9x3@I%1RXb3$2 zyWpWAMMj~Q4a16bT4S1_s8%R#P+Fqk2pYoo5b@fg1}{W)JFNc-|Ii<@&EAP+^GgU| zJ_ptVycpk6%F(F(nUgu#C0B60nd_1!n!lOr3a&GoYQCTAv0NAHI;hq$;{Y2!p<_?|TnD%gH5t72#b#-P6W4~D zrJZm6`*^}ae^!sgy|tW@%zEwGPs!jmC#Prk zQMq}YMvuE?^6hK4W!5{97#wx$xCx_cPr2@I=iV@Ga%zO?ddu}w#{F&Fq>1O+nxlH2 zG3xX&XXTuA#u+`wbk7|%dSu?n(br!;viq5NV=Udt<8HeCTymgG&gorp&$v7%uUF1l zy>fb9Wy#z$Y4o@;@6%}K&(5^-v+{!3Nh93R z_3ygGtpi+_-=Tx~HP>pAmP_C|XSb%ib8Rx_0L$l0*ZMibkX87YI`HXbF5NcCt%8cb zsH6KdP?qZg%G8@PFLxRJ?$#QnPG3CK>g=zs(TsGzTaR=*8pL;I z6mid0E#0$3?rApHx!hAf*F(PvxP}5;XP-67rDN6oejDWCGk@2$Do4aegSE$mm>BpJ z{rzgU{`v>)aS_iG9Y}Y>>f-8<#@pxsC{veIYJPJqg(t9))EAu^sHgjt!R!oTcY8Qg zv!4^l&#I_Vk~G4(?4qn&69Y$`*DlK1U%R5VR;b}D>szOZQ@o~bP3OCQS+`|`Q#6py z0--u19v+!+8a?lbBZcln$tGQgKDlJ=9T#V{sTq`7tJw;)U5|>GR&2G1>uj!zxh`S3 za<0p`&SAWQ=@8d`T{lpL%m{FuojPLe=>xO6TpL_;NDs-*ue2*=x9K{2o31OE?)Q_H zOP{LwITf0ob6D5@*_t2XI?T1YSM&W`hqw;w8c8^Z1-K4z%|oTknwwsvJ(SGvef$rBc-G8z1yjRm_Gkx5z=`Kt^Hdz};W7;?r5)BqJz4U1< z-+<*yZGD=A#=vS;2tBVA8j1$g&E5#43p!iSIZP){@jAR~q^2onseLtUre@UT25;-B zd)$fXfKM-IX8L4116<_(Zvt)|V7i>?5~hpyX}o-)mJgTf4g{XkboMtR-1b%Z*_XP8 z7O{dkoTcBQ6%6ecbRpA$8?}RbsZ03yM{1f*Lg=$~kM3Y|O{(pY2!T3}FkbYyw+D4<=?Jvq9^F1&<8_!;SL-o0 zq}gy(usx>H|H;}TBaklWY(eJ;+ArurroVnbJ5-N7c*BI8>9D&Fp#7%IIC8gEIECp7 zVc-K{;JT?=UakYH*#Q&5u%OFqn#RA}W`M3>`u&G=111UAIGR3{9lV|w7BelU3i<&- z`*|~{tXb5KY-L*vqH|2v?hg>DLJ61RAlEQh&a^oit2%nxx<&1`jRP&9!8P zshRAkoJl%oYcr?v)>XVlYesm1?QiW@7jTLr-+U=|->4~PWZo&6wO=so)eN!8}Bwgc0#Bjde**GH@NYyM8L{l4;K&i&hWrnE@ zUfx0D{kTa}8$9s1#?7Fcn(_KLDc1sd%*jI}T0~}LBw2ZKs2_BWE&4<6(9CRm?Rp*6 zWVVvY+W~_wu(k&z(nR3P#%p~($v8)uWx+TQ`dT-f&9%gpaq#E>T2|7=@)ok_@F37_ zYOFpqi1z2_*4TWA7|k*^F4irYqvy-t2S}hx#=G}vz^w5r8EEpp$rbLSsrG&!pe8cz z7@L+;@xCNM%z+Mq`KQ z=VSwH7yaC6fY2Ci%8cby156hEm~MdD)3in%ZaidwVZz;+2KY?Ga*hEW8LLgzVpDSs z&``9o+5p`qY7Mg*lo{Y*5t3p9oF+^yV4#Uv8_Wo@52{>`aN~W#>y6(Bw1^X0l;wN4 zC?P$g;dR;@eR7RAtD8o93O5%SASj}`!~l;A|4R&TKn&@62AcdL{4@UV;tYL$y>>2> zfv~aoyRi7QvG|Qh5@YcITO20_c%88rSy)+P1prFz4i&$8SB{%Uc?0&q4VtcnIpyon zgVzbO43vm<rFPFZ52;0x{Qs*9k+OHHHdO^@HdZb?!w$2frd_Gru;=HxJPG*PR0!_Y2 zqh_XjJVVoU-BA05bYDR?wtLy(ev!55_iI~b)x6B4yKB3xp?Dx}6sdigu}0FT`qT6w z$*cjC3N4)Uce2uJ=kTdVf^%wq)|pNGjkV+iwrlF_Q${#`Gv7V_*p!Wy#Y9Hlx5}m7l&pNYq3U67M?CJ5Mw%&g84e)p4F3DjJ%sLjjT_>QSO?`J0eFp5FLc#hAm6|p?&2o45 z((saB_%LHuwvrh3vJu#pERxcHkM_^xh^f1d*ZOC$e$h5f4`aH5 z?adcM6rQ8)nZu%~H`UepZCJm@5lx%^9%Xyq3;#kf{ClCj*6+af*1w@?Jzik`NV~s= zmpmdyJRHN`s2r`|k?o~!)%2B2r?9<8g*|m&)%~3-?2Y|U+tb(HaqXP#brc!uk6~}f zRIT5W{h9PnO<&A(Cfn;K?5UYmk8guNb);Id{`+Elv)Nt`Vb34K-b#^w^>%CjCb9kY zY_C#`Z#YIizca%-^G2`G_AX?5Ic)D)F&?29{=Ij#*3V`Ap?x&nh3TGb?<~>Zl81Ht z%=|O;zx7!E%qO(HzD)OHd#{QmFcc$S$_{IL zr?LJbF`oq0oOSRpv z?cK)q0&MRc5kG$ndmWbQcFi@Dy=B_oaJDy=?Y$-9r|z$M{>~ElG5mdP?+Uh8#P&WG z{)J-r_pHd@_g>KU`mw#KY_Fc!x+%WIVe-z@ABp2fH}3CMY%j$2`iXoFusw6mXX*pb zYk%@tf8b6{k7jxf+Z!zG`D4Uy$JtuHGwVSZ-~|5ErBPBGvEqyrJbw=o3gaoP3#n7eW~zmqp<#-pr2T!bJW}?I8frv z*R+M^m|8i zd+w?=0L)ecwLmu(cvjpx8FE4^n8VmqL9csD>kp&>t%1#%GyM0gHaRD;`*IsJyDw*1 z^HW-MRwuE^a@DZOqSMdQaG@Zn`$_DiT&2iP3a+*Yp2U91)oLs*Lp&s|O+6(pvpgs0 z7X|Ga#e^p3a!F;BE}pUC}EagS_` zwbQ2d)fRJcmm7TVZS7EFre|)}bQaV9n5pTyOn)i#Zxvhp5$4R4<%3bYzsu?*?(+2! z^yy-<6>ifGmu;T!kpE|S zuZ0Cw%BR|Zxr4P%1n{`HG$}{?Q!#>#QxRulShNtnN z;SOEoa+$RVXoDkjB_30I?T1Yi*c?)y2jI$%uqoV;5x*0m}?bcoa+$R zVXoEPjB_30I?T12!8q3;w>|}1FJ`EF=&6u~!670eei9=*PaIx;75MAo@DvvGyMn&P zs~=Qbgg~K~<3j{JT+r8u4%{h@pECvhglF%AS>Gl)2i+<7k#Oj4ugB^>LH|c=Mi+~S zeI@Aawtd>UED@7VUedW?rp|fy!rK2oVE^A5uy(KqKJ^a?{N1OeT9KNo)9T@lW-_UIP|D+Xt>A$?_p2j?-}a|)lo_x2NrmfLOm)P zd_hF$SDZszT#?0Iu zeQ2i6u(|}|GfqV4Eit6~qK8$tef6Ob_*~HY1pSksFBK8_Rt#Cb7^2G}v~FLei4au? z16PU$eiL}2nAB;4ZXoD%(;m04{uDjxCqmxPDCh{QK%@tnktOh(#Sq*s=tVqjPcsYg zO~T+bLz{=0Q-bYy*v#b)Q_o<&xpiUq9eKB9ZW$Q7OAP+wBJGU)UAk{UWfI&Nyhn7} z@bh`!n9RX4{9L}aXKp8&dk<&D;NQ*LL!IXsDx+|sNGH5G*){w#Cu_cW_QE*aCkB70 zc*xJl&k~P2x*efZd8jG?{D0rA8|ICJGCf~*ujbd~NSL0#5QG2D16tl>g^}+tzd%3C zYo1CnKpI~VGiRA*NoX2_KSMm|Y2?eF(hZx-vnH~?MEQEE7+}h?TESfUGW;`EX})=2 z#tcRO82m~9)bi$|a$rsje$#R-Z}tO5K6k(7H)lr-f7=h5A8f%u zU9Nv%K=Kd%q7|}*{H8xN-@SMT%p}>jG5E(52D%pb+FdZB&`mrYY?5+t4E`B>Z?QEy zWaR&Bpc`l-`1SbOxw$H-lNJa>YPsqp?g6@Lk$W6;WwO&r+{tjY zaOc&%dWfrCY28oa_NuECxqU=U<($M#B3H}Yl;F#>Cvoq=Rl~i=$Yt7`leppNDw!L$ z9K(~iFYBsB?qj(zJc+wit`_b#M`GCNByK6YO1LE&RXU0Lo~{z^yGLTt{UmO#yGoI3 zlwYb|tCP6X=Bk-HpRQW2I*A*cu3F>SYz`QP-$$Ien%&4UvlVom zQEDdFH*V8*%mK;p-_~bzL1k7cW2nlXxQ+#R%rQbmNV5V;gH#Ie!oY{ z>mwM}Yh&m=&wZ=t5B*ZUu@$2HHsX}oG*DTp<;|wUL@xCiFW-#>+E*`#bM?E~(gFKE z7Ubx?3G}&6L_%}%Bkj$)0kc^!^6v`!hF|+A@7GRa3kEnSLYlx0FFv6g;A5>~wwf)* z*zh}|0s0vGhTk?CQR=_@as;=&APTs&Y51T>Mq_BIxH4t4E~$U51JmE9&C=G@No?O z7cuzX#NZ$F@`I5i`qc|W_{U@LYfbVFndv}!41VJ(`N+SPRRVbbO$>gI82oc%@bhEv z2NIw1Uk<_07z!g}@W;pC|1Ac8y2W?TfK2FS8Gw#g!DFxL0GpGW@$YKdoTE$?r-2#b zWN7^oEpPU-_Xzz@U(&casao!6n)k&)b$9f%&Yh0iguw~o6yiU^p!~7gX;XCr=HzPY zKQwL50y}y-fRX7e6qbk{G!!SuHRfo8^?3DYC2;v`x`|(Dd2^Dr!0s?*#?F0Oz?^M$ z7Y5H0bRSO-@H(gITHl-nel2=@sn9>u>M*sh=86zMAUu9WM5J5{(a(Zz@}_pkoEJZ1 z_ZaQXjGpB^d>!symTuAV=8%>ot_(C4r@N;M`&Ww&J}WMPTq5K%ck1?d*Ms}H!hvzZ z;O7r%1#`Ceg^*t(8ob?ewFqx&5?3fjdPeNwF$wj9ZH35dB4+P-=Z$(tGk8MN)j{?NU&st9lzGzDlL{8KofuGRwGNdTXA{G3`RO{!j^N3%o( zD#g4m6dm}@8UlA7HV~Ixe4>Y41iekn%b{Xncvs{=rnuH{e$<}ZzA6?WS}1a0SX9A{ z!KP##p;jD`mA~j5%4Yfwk(A#GhkHdXmgx4?cf#Ns7wQJOu)$s4>p-fPm^A~$klf^% zXgCPZ_fF(JCPLi4QsNTbPBHBs7Cjm)X2A(#kR2`%4mK7Je8|&0Xikupi;#aO92g;b zSoZ_nBeQnCEc8bS2W}D$chT3QTPkz4Gh3_!JI$=XcEOi1PWV6ihRC&mIzjnkNcl*m z*<-XCseLv(5{{LUKYhGtyp}Upn9ZIfqiX%D)a}B%@i%A#<{G#OQY;7LPb`yWX#G=Y ztAw|>q+E9KgPLQG1SjjF>1yYvwZ0i{JARF?5cdWOO#jh*yT(@-io^A}S#HR=Cgvn+ zqGwsf%Wtd!%D6oqc&h0v+qX4?=l#`hSIk7#9O`35_7yP^Uld13lNvFGHcNdeCSG&n zEyX5trs&wKY~H;9gsY0RGp`k~^-2V5*3NveIvc_JM0yz;DI75qgczMr_lvnG_01kR zMi7JQEfK~4(t!G0On#|vMxkm4Fncp53(Ezr$>nRd6V!(CpV==f9w3_HeR&O&F|7YC`s(oT`r32;wC9}&oa9uU= zF-OR%vkRM?pQ>@7x&e|u;g;!b9FQGw14f&y-eP`_7d@&b0aY`Re^NhI1jzw+lQ&Q} zAb+@RQmo1zz{tHKrT+_ky~*q>dLVP4ItSK?9pLL?&Kdo`=74TrJtTS{4OBM-znTS` zVv3K{kC_A6t~f4Xi{oI#08P?iXN&kmP}Z)_z5YUflZg*KzS7?P$+&#?r2QVszkdHC L!AVGOvh4o>co-(I delta 296677 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