Linux: основы и практическая работа в системе

Курс познакомит с устройством Linux и базовыми навыками работы в командной строке. Вы научитесь управлять файлами, пользователями, программами и службами, а также освоите основы сети и безопасности для повседневных задач.

1. Введение в Linux и установка дистрибутива

Введение в Linux и установка дистрибутива

Что такое Linux

Linux — это семейство операционных систем, построенных на базе ядра Linux. В повседневной речи словом Linux часто называют всю систему целиком: ядро + системные утилиты + графическая среда + набор программ.

Важно различать два понятия:

  • Ядро Linux — центральная часть системы, которая управляет процессами, памятью, устройствами и сетью.
  • Дистрибутив Linux — готовая операционная система, в которой ядро Linux уже собрано вместе с установщиком, пакетным менеджером и набором программ.
  • Официальный сайт ядра Linux: The Linux Kernel Archives

    Где используется Linux

    Linux встречается намного чаще, чем кажется:

  • Серверы и облака: хостинг сайтов, базы данных, контейнеры.
  • Разработка: удобная среда для Python, Go, Java, C/C++, DevOps.
  • Сетевое оборудование: маршрутизаторы, NAS, системы видеонаблюдения.
  • Встраиваемые устройства: множество устройств работают на Linux.
  • Настольные ПК: полноценная замена другим ОС для учебы, работы и дома.
  • Почему Linux популярен

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

    Дистрибутивы различаются:

  • системой управления пакетами
  • частотой обновлений
  • предустановленным окружением и программами
  • уровнем сложности для новичка
  • Ниже — популярные варианты для начала:

    | Дистрибутив | Для кого | Особенности | Сайт | |---|---|---|---| | Ubuntu | новичкам и всем | много инструкций, хорошая поддержка железа | Ubuntu | | Linux Mint | новичкам | интерфейс максимально привычен после Windows | Linux Mint | | Fedora | тем, кто хочет более новые версии ПО | часто свежие пакеты, связь с экосистемой Red Hat | Fedora | | Debian | тем, кому важна стабильность | строгий подход к стабильности | Debian | | Arch Linux | продвинутым | установка и настройка вручную, максимум контроля | Arch Linux |

    Рекомендация для старта в рамках курса:

  • Ubuntu LTS или Linux Mint — если нужен максимально гладкий вход.
  • Fedora — если хочется более «свежую» систему и вы готовы чаще обновляться.
  • Способы установить Linux

    Есть несколько безопасных способов начать, не рискуя основным компьютером.

    !Схема помогает выбрать способ установки в зависимости от цели.

    Live USB (запуск без установки)

    Это режим, когда система загружается с флешки и почти не трогает ваш диск.

  • Подходит, чтобы быстро проверить, работает ли Wi‑Fi, звук, видео.
  • Изменения обычно не сохраняются после перезагрузки.
  • Виртуальная машина

    Linux запускается как «компьютер внутри компьютера».

  • Хорошо для обучения и экспериментов.
  • Если что-то сломали, можно откатиться снапшотом.
  • Популярные варианты:

  • VirtualBox
  • VMware Workstation Player
  • Dual Boot (двойная загрузка)

    На одном ПК стоят две системы, и при включении вы выбираете, что загрузить.

  • Подходит, если Linux нужен постоянно и «по-настоящему».
  • Требует аккуратности с разметкой диска.
  • WSL (Linux внутри Windows)

    Если у вас Windows 10/11, можно установить Linux-среду без отдельной установки ОС.

  • Отлично для командной строки и разработки.
  • Это не «полный Linux на железе», а интеграция внутри Windows.
  • Документация: WSL documentation

    Что подготовить перед установкой

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

  • Сделайте резервную копию важных данных.
  • Проверьте свободное место на диске (для комфортной установки обычно нужно от 25 ГБ и больше).
  • Уточните режим загрузки: UEFI сейчас встречается чаще, чем Legacy BIOS.
  • Подготовьте интернет (обновления и драйверы проще ставить сразу).
  • Если планируете Dual Boot:

  • Убедитесь, что у вас есть доступ к восстановлению системы.
  • Уменьшайте раздел Windows штатными средствами Windows (если вы на Windows), а не сторонними утилитами.
  • Скачивание ISO и проверка целостности

    Дистрибутив обычно скачивают как ISO-образ.

    Правила безопасности:

  • Скачивайте ISO только с официального сайта.
  • По возможности проверяйте контрольную сумму (checksum), чтобы убедиться, что файл не поврежден.
  • Подсказка по терминологии:

  • SHA256 — распространенный тип контрольной суммы.
  • Если контрольная сумма на сайте и у вашего файла совпадают, значит файл с высокой вероятностью корректный.
  • Создание загрузочной флешки

    Для установки на реальный компьютер обычно нужна загрузочная флешка.

    Популярные инструменты:

  • Rufus (часто используют в Windows)
  • balenaEtcher (Windows/macOS/Linux)
  • Ventoy (удобно держать несколько ISO на одной флешке)
  • Общие принципы:

  • Вы выбираете ISO-файл.
  • Вы выбираете флешку.
  • Программа записывает образ так, чтобы ПК мог загрузиться.
  • Важное предупреждение:

  • Запись образа обычно стирает флешку полностью.
  • Установка Linux на компьютер: общий сценарий

    Почти у всех дистрибутивов процесс похож. Ниже — общий план, чтобы вы понимали, что будет происходить.

    Шаги установки

  • Загрузитесь с флешки и выберите режим Try/Install.
  • Выберите язык и раскладку клавиатуры.
  • Подключитесь к интернету (если есть такая опция).
  • Выберите тип установки:
  • - установка рядом с другой ОС (Dual Boot) - установка с очисткой диска - ручная разметка
  • Настройте диск (разделы).
  • Укажите часовой пояс.
  • Создайте пользователя и пароль.
  • Дождитесь установки и перезагрузитесь.
  • Разметка диска: простыми словами

    Раздел — это логическая часть диска. Linux может использовать несколько разделов, но для начала достаточно понимать минимум.

    Часто встречающиеся варианты:

  • / (root) — основной раздел системы.
  • swap — пространство под выгрузку памяти (не всегда нужен отдельным разделом; иногда используется swap-файл).
  • /home — пользовательские файлы и настройки.
  • Если вы новичок, лучше выбирать автоматическую разметку установщика, особенно на первых шагах.

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

    После первого входа полезно выполнить базовые действия.

  • Установить обновления системы.
  • Проверить, что работают звук, Wi‑Fi, Bluetooth.
  • Установить нужные программы из «магазина приложений» дистрибутива или через пакетный менеджер.
  • Включить автоматические обновления, если вы хотите меньше ручной рутины.
  • Типичные проблемы и как их избежать

  • Не загружается с флешки: проверьте порядок загрузки в UEFI/BIOS и правильность записи флешки.
  • Нет Wi‑Fi: иногда нужны дополнительные драйверы; в Ubuntu часто помогает подключение по кабелю на время установки.
  • Dual Boot не показывает Windows или Linux: чаще всего связано с режимом UEFI/Legacy или настройками загрузчика.
  • Secure Boot: иногда мешает сторонним драйверам; в некоторых случаях его временно отключают в UEFI.
  • Как мы будем работать дальше в курсе

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

    2. Командная строка: навигация и работа с файлами

    Командная строка: навигация и работа с файлами

    Зачем нужна командная строка в Linux

    В предыдущей статье вы познакомились с Linux и способами установки. Теперь переходим к практической базе: работа в командной строке.

    Командная строка в Linux обычно состоит из двух частей:

  • Терминал — программа-«окно», куда вы вводите команды.
  • Оболочка (shell) — программа, которая читает команды и запускает их (часто это bash или zsh).
  • Зачем это нужно:

  • Терминал позволяет быстро выполнять действия, которые в интерфейсе требуют много кликов.
  • Почти все серверы и многие инструменты администрирования/DevOps рассчитаны на командную строку.
  • Команды легко повторять, сохранять и автоматизировать (скрипты).
  • Как безопасно тренироваться

    Если вы установили Linux на виртуальную машину или используете WSL — это отличный «полигон». Для упражнений заведите отдельную папку, чтобы не трогать системные файлы:

    Символ ~ означает ваш домашний каталог.

    Как читать команду

    Базовый шаблон выглядит так:

  • Команда — что сделать (например, ls).
  • Опции — как именно сделать (например, -l для подробного списка).
  • Аргументы — с чем работать (например, имя файла или папки).
  • Пример:

    Где вы находитесь: текущий каталог и pwd

    В Linux у любой команды есть контекст — текущий рабочий каталог (current working directory). Узнать его можно командой:

    Она напечатает путь вроде /home/ivan/linux-course.

    Путь к файлу: абсолютный и относительный

    Путь — это «адрес» файла или папки в файловой системе.

  • Абсолютный путь начинается от корня /, например /home/ivan/Documents.
  • Относительный путь считается от текущего каталога, например Documents или ../Downloads.
  • Важные обозначения:

  • / — корень файловой системы (самый верх).
  • ~ — домашний каталог текущего пользователя (например, /home/ivan).
  • . — текущий каталог.
  • .. — родительский каталог (на уровень выше).
  • !Иллюстрация разницы между абсолютным и относительным путём

    Переход между каталогами: cd

    Команда cd меняет текущий каталог.

    Частые варианты:

    Что означают примеры:

  • cd ~ — перейти в домашний каталог.
  • cd /etc — перейти в каталог /etc по абсолютному пути.
  • cd .. — подняться на уровень выше.
  • cd ./project — перейти в project внутри текущего каталога.
  • cd - — вернуться в предыдущий каталог.
  • Просмотр содержимого: ls

    Чтобы увидеть файлы и папки:

    Полезные опции:

  • ls -l — подробный список (права, владелец, размер, дата).
  • ls -a — показать скрытые файлы (те, что начинаются с точки).
  • ls -la — часто используемая комбинация.
  • Пример:

    Скрытые файлы обычно хранят настройки программ, например .bashrc.

    Создание файлов и каталогов: touch и mkdir

    Создать пустой файл или обновить время изменения существующего:

    Создать каталог:

    Создать вложенные каталоги за один раз:

    Опция -p полезна, когда промежуточных папок ещё нет.

    Копирование и перемещение: cp и mv

    Копирование файлов: cp

    Копирование каталогов обычно требует рекурсии (копировать всё содержимое):

    Перемещение и переименование: mv

    mv используется и для перемещения, и для переименования:

    Удаление: rm и rmdir (осторожно)

    Удалить файл:

    Удалить пустой каталог:

    Удалить каталог с содержимым (опасная операция, проверяйте путь):

    Полезный «более безопасный» режим — спрашивать подтверждение:

    Важно:

  • В терминале удаление обычно происходит без «Корзины».
  • Команда rm -rf может очень быстро удалить много данных. Используйте её только если вы точно понимаете, что делаете.
  • Просмотр содержимого файлов: cat, less, head, tail

    Быстрый вывод: cat

    Показать файл целиком:

    Удобный просмотр больших файлов: less

    Подсказки для less:

  • q — выход.
  • /текст — поиск.
  • n — следующее совпадение.
  • Первые/последние строки: head и tail

    Первые 10 строк:

    Последние 10 строк:

    Задать количество строк:

    Поиск файлов по имени: find (базово)

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

  • ~/linux-course — где искать.
  • -name "*.txt" — условие: имена, заканчивающиеся на .txt.
  • Если вы не уверены, что именно ищете, сначала ограничивайте область поиска своим домашним каталогом.

    Автодополнение, история и кавычки

    Автодополнение

    Нажмите Tab, чтобы оболочка дополнила команду/путь. Это уменьшает количество ошибок.

    История команд

    Стрелка вверх показывает предыдущие команды. Обычно история сохраняется между сессиями.

    Пробелы в именах

    Если в имени есть пробелы, используйте кавычки:

    Либо экранируйте пробел обратным слэшем:

    Шаблоны имён (globbing): * и ?

    Оболочка умеет подставлять группы файлов по шаблону:

  • * — любое количество символов.
  • ? — ровно один символ.
  • Примеры:

    Рекомендация: перед удалением по шаблону сначала выполните ls с тем же шаблоном, чтобы увидеть, что будет затронуто.

    Помощь по командам: --help и man

    Если вы забыли синтаксис:

  • --help — краткая встроенная справка.
  • man — подробное руководство.
  • Онлайн-справочник по man-страницам: Linux man-pages project

    Мини-шпаргалка команд

    | Задача | Команда | Пример | |---|---|---| | Узнать текущий каталог | pwd | pwd | | Посмотреть содержимое | ls | ls -la | | Перейти в каталог | cd | cd ~/linux-course | | Создать файл | touch | touch a.txt | | Создать каталог | mkdir | mkdir -p a/b | | Копировать | cp | cp -r dir dir2 | | Переместить/переименовать | mv | mv a.txt b.txt | | Удалить файл/каталог | rm | rm -ri dir | | Смотреть файл постранично | less | less file.log | | Найти по имени | find | find . -name "*.conf" |

    Что дальше

    Теперь вы умеете ориентироваться в файловой системе Linux и выполнять базовые операции с файлами и каталогами. В следующих материалах курса обычно переходят к более «системным» темам: права доступа и владельцы, запуск процессов, установка программ и работа с пакетными менеджерами — всё это опирается на навыки навигации и аккуратной работы с файлами.

    3. Права доступа, пользователи и группы

    Права доступа, пользователи и группы

    Зачем нужны права доступа в Linux

    В прошлой статье вы научились работать с файлами и каталогами через терминал: создавать, копировать, перемещать и удалять. Теперь важно понять, почему иногда команда «не срабатывает» и появляется ошибка вроде Permission denied.

    В Linux безопасность и порядок достигаются за счёт простой идеи:

  • у каждого процесса есть пользователь (кто запустил)
  • у каждого файла и каталога есть владелец и группа
  • у каждого файла и каталога есть права для владельца, группы и остальных
  • Эта модель используется повсюду: на домашнем ноутбуке, на сервере, в контейнерах.

    Пользователь, группа и суперпользователь

    Кто такой пользователь

    Пользователь — это учётная запись в системе. От имени пользователя запускаются программы, создаются файлы, выполняются команды.

    Практические команды:

  • whoami показывает имя текущего пользователя.
  • id показывает числовой идентификатор пользователя (UID), основной идентификатор группы (GID) и список групп.
  • Что такое группы

    Группа — это способ объединять пользователей и выдавать доступ не одному человеку, а сразу набору.

    Полезные команды:

  • groups показывает группы текущего пользователя.
  • id показывает группы более подробно.
  • Суперпользователь root и sudo

    В Linux есть пользователь root — суперпользователь с максимальными правами. Он может читать и изменять почти любые файлы, управлять пользователями, сетью, сервисами.

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

    Важно помнить:

  • sudo даёт повышенные права на одну команду.
  • sudo почти всегда просит пароль вашего пользователя, а не пароль root.
  • регулярная работа под root повышает риск случайно повредить систему.
  • Документация: sudo — руководство

    Владелец и группа у файлов

    Каждый файл и каталог имеет:

  • владельца (user)
  • группу (group)
  • Посмотреть это можно через ls -l:

    Пример строки:

    Здесь:

  • ivan — владелец файла
  • developers — группа файла
  • Права доступа: чтение, запись, выполнение

    Базовые права:

  • r — чтение (read)
  • w — запись (write)
  • x — выполнение (execute)
  • Права задаются отдельно для трёх категорий:

  • u — владелец (user)
  • g — группа (group)
  • o — остальные (others)
  • В выводе ls -l они представлены строкой из 10 символов, например:

    Расшифровка:

  • первый символ — тип: - файл, d каталог (и другие варианты тоже бывают)
  • следующие 9 символов — права: три тройки u, g, o
  • !Наглядная расшифровка строки прав из ls -l

    Что означает x для файла и для каталога

    Право x часто вызывает вопросы, потому что для файлов и каталогов оно ощущается по-разному.

    Для файла:

  • x означает «можно запускать как программу/скрипт».
  • Для каталога:

  • x означает «можно заходить в каталог (cd) и обращаться к объектам внутри по имени».
  • Практический ориентир:

  • r на каталог — можно получить список имён файлов (ls)
  • x на каталог — можно войти и доступаться до файлов внутри
  • w на каталог — можно создавать/удалять/переименовывать файлы внутри (при наличии x)
  • Изменение прав: chmod

    Команда chmod меняет права доступа.

    Справка: chmod — man-страница

    Символьный режим chmod

    Вы указываете, кому и какие права добавить или убрать.

    Примеры:

    Обозначения:

  • u, g, o, a — владелец, группа, остальные, все
  • + добавить, - убрать, = установить ровно
  • Числовой режим chmod

    Иногда права задают числом, например chmod 644 file.

    Практически это используется очень часто, поэтому полезно запомнить типовые варианты:

  • 644 — обычный файл: владелец читает/пишет, остальные только читают
  • 755 — исполняемый файл или каталог: владелец всё, остальные читают и заходят
  • 600 — приватный файл: доступ только владельцу
  • Если вы пока не хотите углубляться в математику битов, достаточно запомнить эти шаблоны и понимать их смысл.

    Изменение владельца и группы: chown и chgrp

    chown

    chown меняет владельца и (опционально) группу.

    Справка: chown — man-страница

    Примеры:

  • ivan:developers означает «владелец ivan, группа developers».
  • -R применяет изменение рекурсивно ко всему внутри каталога.
  • chgrp

    chgrp меняет только группу:

    Справка: chgrp — man-страница

    Почему возникает Permission denied

    Частые причины:

  • у вас нет прав на файл или каталог
  • вы пытаетесь писать в системные каталоги (например, /etc, /usr), где нужны права администратора
  • у файла нет x, поэтому он не запускается как программа
  • у каталога нет x, поэтому вы не можете зайти внутрь или прочитать файл по пути
  • Как действовать безопасно:

  • посмотрите права и владельца: ls -l (для каталога полезно ls -ld каталог)
  • уточните своего пользователя и группы: whoami, id
  • решите, что правильнее: использовать sudo для разовой операции или корректно настроить владельца/права
  • Специальные права: sticky bit, setuid, setgid (обзорно)

    Иногда в системе встречаются «особые» флаги прав. На старте важно хотя бы знать, что они существуют.

    Sticky bit (липкий бит) на каталог

    Обычно используется для общих каталогов вроде /tmp. Идея:

  • писать могут многие
  • удалять чужие файлы нельзя (даже если есть права на запись в каталог)
  • Вы можете увидеть такой каталог по t в конце прав, например:

    setuid и setgid

  • setuid на исполняемом файле означает запуск с правами владельца файла.
  • setgid на каталоге часто означает, что новые файлы внутри будут наследовать группу каталога.
  • Эти механизмы полезны, но требуют аккуратности. На данном этапе достаточно уметь распознавать их в ls -l и не пытаться применять без понимания.

    Где хранятся сведения о пользователях и группах

    В классических Linux-системах базовые данные лежат в текстовых файлах:

  • /etc/passwd — список пользователей (не пароли)
  • /etc/group — список групп
  • /etc/shadow — хэши паролей (доступ обычно только у root)
  • Можно посмотреть формат (без редактирования):

    Важно:

  • вручную редактировать эти файлы новичку не стоит
  • для управления пользователями обычно используют специальные команды и инструменты системы
  • Практический мини-сценарий: рабочая папка и права

    Представим, что вы ведёте практику в ~/linux-course, как в прошлой статье.

  • создайте каталог для проекта:
  • посмотрите права каталога:
  • сделайте скрипт исполняемым:
  • Если что-то не запускается — первым делом проверяйте наличие x.

    Что дальше

    Теперь у вас есть базовая «система координат» безопасности Linux: пользователи, группы, владельцы и права. Эти знания напрямую нужны для следующего шага практики: работы с системными файлами, установкой программ и обслуживанием системы, где часто требуются sudo и аккуратное понимание, кому и что разрешено.

    4. Управление пакетами и обновлениями

    Управление пакетами и обновлениями

    Зачем нужен пакетный менеджер

    В прошлых статьях вы научились:

  • работать в терминале и управлять файлами
  • понимать, почему появляется Permission denied, и использовать sudo
  • Теперь добавим важный практический навык: установка программ и обновление системы правильным способом.

    В Linux чаще всего не скачивают установщики с сайтов, как в некоторых других ОС. Вместо этого используют пакетный менеджер — инструмент, который устанавливает программы из доверенных источников и умеет:

  • находить и скачивать пакеты
  • проверять их целостность и подлинность
  • ставить зависимости
  • обновлять систему
  • удалять программы без мусора
  • Базовые понятия

    Пакет

    Пакет — это архив со всем необходимым для установки программы:

  • файлы программы
  • служебные метаданные (версия, описание)
  • список зависимостей
  • скрипты установки/удаления (иногда)
  • Репозиторий

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

    Практическая идея:

  • вы устанавливаете программы не “из интернета вообще”, а из конкретных подключённых репозиториев
  • Зависимости

    Зависимости — это другие пакеты, которые нужны программе для работы.

    Типичный пример: вы ставите редактор, а вместе с ним подтягиваются библиотеки и компоненты, без которых он не запустится.

    Почему часто нужен sudo

    Установка и обновление программ меняют системные каталоги (например, /usr, /etc). Обычный пользователь туда писать не может — это часть модели безопасности из предыдущей статьи.

    Поэтому для системных операций обычно требуется:

  • sudo
  • Какие пакетные менеджеры бывают

    Зависит от дистрибутива.

    | Семейство дистрибутивов | Пакеты | Менеджер (команды) | |---|---|---| | Debian/Ubuntu/Linux Mint | .deb | apt | | Fedora/RHEL/CentOS Stream | .rpm | dnf | | Arch/Manjaro | свои пакеты | pacman | | openSUSE | .rpm | zypper |

    В рамках курса достаточно уверенно освоить логику на примере apt и понимать аналоги.

    Общая логика установки и обновления

    Почти везде процесс одинаковый:

  • обновить список доступных пакетов (скачать свежие индексы)
  • установить программу или обновить установленные пакеты
  • !Схема показывает, что происходит “под капотом” при установке и обновлении пакетов

    Практика: apt (Debian/Ubuntu/Mint)

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

    Команда обновляет списки пакетов из репозиториев, но ничего не устанавливает:

    Полезный навык: делать apt update перед установкой и перед обновлением системы.

    Справка: apt (man-страница)

    Обновить установленные пакеты

    Стандартное обновление:

    Если обновление требует удалить/добавить пакеты для разрешения зависимостей, иногда используют:

    Важно:

  • full-upgrade не значит “опасное”, это означает “можно менять набор пакетов, чтобы обновиться корректно”
  • внимательно читайте, что будет удалено
  • Установить пакет

    Установить несколько пакетов:

    Найти пакет

    Поиск по имени и описанию:

    Посмотреть информацию о пакете:

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

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

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

    После удалений часто остаются зависимости, которые ставились “автоматически” и больше не нужны:

    Посмотреть, что можно обновить

    “Сухой прогон” (без реальных изменений)

    Иногда полезно посмотреть, что произойдёт, но ничего не менять:

    Опция -s означает simulate.

    Практика: dnf (Fedora)

    Обновить систему:

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

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

    Поиск:

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

    Практика: pacman (Arch)

    Полное обновление системы (типичная команда):

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

    Удалить пакет (вместе с неиспользуемыми зависимостями и конфигами, если применимо):

    Поиск:

    Справка: pacman (man-страница)

    Snap и Flatpak: “универсальные” форматы

    Кроме классических репозиториев дистрибутива, вы можете встретить:

  • Snap — пакеты, которые ставятся через snap
  • Flatpak — пакеты, которые ставятся через flatpak
  • Зачем они нужны:

  • часто содержат зависимости “внутри”, поэтому проще установить новую версию приложения на разных дистрибутивах
  • могут работать в более изолированной среде (песочнице), что повышает безопасность
  • Минусы, которые полезно знать:

  • могут занимать больше места
  • иногда интеграция с системой и темы оформления работают не идеально
  • Документация:

  • Flatpak documentation
  • Snap documentation
  • Безопасные обновления: как делать правильно

    Основные правила

  • обновляйте систему регулярно
  • используйте репозитории вашего дистрибутива или официальные источники
  • внимательно читайте список того, что будет установлено/удалено
  • не выполняйте команды установки, которые вы не понимаете (особенно через curl | sh)
  • Проверка подлинности пакетов

    Пакетные менеджеры используют подписи и механизмы доверия репозиториям.

    Для apt важная часть этой модели описана в:

  • apt-secure (man-страница)
  • Практический смысл:

  • даже если кто-то подменит файлы на пути, менеджер должен заметить проблему и остановиться
  • Типичные проблемы и что делать

    Ошибка “Could not get lock”

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

    Что делать:

  • подождать пару минут и повторить команду
  • проверить, не открыт ли второй терминал с установкой
  • Репозиторий не обновляется или даёт ошибки

    Возможные причины:

  • проблемы с интернетом или DNS
  • репозиторий временно недоступен
  • некорректно добавленный сторонний репозиторий
  • Базовый безопасный подход:

  • сначала обновите индексы и посмотрите текст ошибки: sudo apt update
  • не “чините” командой из случайного форума, если не понимаете, что она делает
  • Конфликт конфигурации

    При обновлениях иногда появляется вопрос о замене конфигурационного файла (например, в /etc).

    Рекомендация для новичка:

  • если вы ничего не настраивали вручную, обычно безопасно принять вариант по умолчанию
  • если настраивали, сначала сохраните свою версию (часто установщик сам предложит варианты)
  • Итоги

    Теперь вы понимаете основу ежедневной работы с Linux-системой:

  • что такое пакеты, репозитории и зависимости
  • почему sudo нужен для установки и обновлений
  • как обновлять систему и ставить программы через apt (и какие есть аналоги dnf и pacman)
  • чем отличаются классические пакеты от Snap и Flatpak
  • Эти навыки напрямую опираются на предыдущие темы курса: командную строку и модель прав доступа. Дальше, когда вы будете настраивать систему и сервисы, пакетный менеджер станет вашим основным инструментом поддержания системы в актуальном и безопасном состоянии.

    5. Процессы, службы и планировщики задач

    Процессы, службы и планировщики задач

    Как эта тема связана с предыдущими

    Ранее в курсе вы научились:

  • работать в терминале и с файлами
  • понимать права доступа и использовать sudo
  • устанавливать и обновлять программы через пакетный менеджер
  • Теперь добавим ещё один базовый слой понимания Linux: что именно выполняется в системе, как это управляется и как запускать задачи по расписанию.

    Процессы: что это такое

    Процесс — это запущенная программа, которая выполняется в системе. Когда вы запускаете команду в терминале, оболочка создаёт новый процесс.

    Ключевые свойства процесса:

  • PID (process ID) — уникальный номер процесса
  • PPID — PID родительского процесса, который его запустил
  • Пользователь — от чьего имени выполняется процесс
  • Состояние — выполняется, спит, остановлен и т.д.
  • !Дерево процессов помогает понять, кто кого запускает и почему у каждого процесса есть родитель

    Просмотр процессов

    ps: снимок текущего состояния

    Команда ps показывает процессы в виде списка.

    Практические варианты:

  • ps показывает процессы текущего терминала
  • ps aux показывает почти все процессы в системе
  • ps -ef часто встречается в документации и на серверах
  • Примеры:

    Что часто смотрят в выводе:

  • PID — чтобы затем управлять процессом
  • USER — от какого пользователя работает процесс
  • COMMAND — какая программа запущена и с какими аргументами
  • Справка:

  • ps — man-страница
  • top и htop: интерактивный мониторинг

    top показывает процессы в реальном времени и помогает понять, что нагружает CPU и память.

    Запуск:

    Полезные действия в top:

  • сортировка по CPU или памяти зависит от версии, но обычно подсказки видны в интерфейсе
  • выход: q
  • htop удобнее визуально, но может быть не установлен. Его обычно ставят через пакетный менеджер.

    Справка:

  • top — man-страница
  • pgrep и поиск по имени

    Когда PID неизвестен, удобнее искать процесс по имени.

    Пример:

  • -a выводит также командную строку процесса
  • Справка:

  • pgrep — man-страница
  • Состояния процесса и управление сигналами

    В Linux процессом часто управляют через сигналы. Сигнал — это короткое уведомление процессу от системы или пользователя.

    Самые важные сигналы:

  • SIGTERM — корректно попросить завершиться
  • SIGKILL — принудительно завершить, без “вежливого” завершения
  • SIGINT — прерывание, обычно соответствует Ctrl+C в терминале
  • SIGHUP — часто используется, чтобы попросить перечитать конфигурацию (зависит от программы)
  • Справка:

  • signal — man-страница
  • kill: отправка сигнала по PID

    Базовые примеры:

    Важно понимать смысл:

  • kill 1234 по умолчанию отправляет SIGTERM, то есть “заверши работу корректно”.
  • SIGKILL стоит использовать только если процесс “завис” и не реагирует, потому что у программы не будет шанса сохранить данные и освободить ресурсы.
  • Справка:

  • kill — man-страница
  • pkill и killall: завершение по имени

    Примеры:

    killall тоже работает “по имени”, но будьте внимательны: в разных Unix-подобных системах поведение исторически отличалось, а в Linux оно обычно “убить процессы по имени”. Перед применением полезно читать man.

    Справка:

  • pkill — man-страница
  • killall — man-страница
  • Задачи в терминале: foreground, background и job control

    Когда вы запускаете команду в терминале, она обычно занимает терминал до завершения. Это режим foreground.

    Полезные действия:

  • Ctrl+C прерывает процесс, отправляя SIGINT
  • Ctrl+Z приостанавливает процесс
  • jobs показывает список задач текущей оболочки
  • bg продолжает приостановленную задачу в фоне
  • fg возвращает задачу на передний план
  • Пример сценария:

    Важно различать:

  • jobs — это механизм оболочки в рамках текущей сессии терминала
  • services — системные службы, которые обычно живут независимо от вашего терминала
  • Справка:

  • bash — man-страница
  • Службы: что это такое и зачем нужны

    Служба — это программа, которая обычно работает в фоне и предоставляет функциональность системе или другим программам.

    Примеры служб:

  • SSH-сервер
  • веб-сервер
  • служба времени
  • менеджер сети
  • Во многих современных дистрибутивах управление службами выполняет systemd.

    systemd и systemctl: управление службами

    Что такое systemd

    systemd — это системный менеджер, который запускается одним из первых при старте ОС и обычно имеет PID 1. Он отвечает за запуск и контроль служб.

    Справка:

  • systemd.io
  • systemd (freedesktop.org)
  • Основные команды systemctl

    Проверить статус службы:

    Запустить, остановить, перезапустить:

    Включить или выключить автозапуск при старте системы:

    Важное различие:

  • start запускает службу прямо сейчас
  • enable включает запуск при загрузке
  • Проверить, включён ли автозапуск:

    Посмотреть список неуспешных служб:

    Справка:

  • systemctl — man-страница
  • Где смотреть логи: journalctl

    Если служба не запускается, первое место для диагностики — журнал systemd.

    Показать логи юнита:

    Показать логи только с текущей загрузки:

    Следить за логом в реальном времени:

    Справка:

  • journalctl — man-страница
  • Что такое unit-файлы

    В systemd конфигурация описывается юнитами (units). Самые частые типы:

  • service — служба
  • timer — планировщик systemd
  • mount — монтирование
  • socket — активация по сокету
  • Посмотреть содержимое unit-файла:

    Понять, где находится unit-файл:

    Справка:

  • systemd.unit — man-страница
  • Планировщики задач: как запускать по расписанию

    В Linux есть два самых распространённых подхода:

  • cron и связанные инструменты
  • systemd timers
  • Выбор зависит от дистрибутива, требований и привычек команды.

    !Схема показывает два подхода к расписанию: cron и systemd timers

    Cron: классический планировщик

    Что такое crontab

    crontab — это таблица заданий по расписанию.

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

    Редактировать задания:

    Справка:

  • crontab — man-страница
  • cron — man-страница
  • Формат расписания в cron

    В типичном cron-выражении 5 полей:

  • минута
  • час
  • день месяца
  • месяц
  • день недели
  • Пример: запуск каждый день в 03:30.

    Практические правила для новичка:

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

    Здесь:

  • >> добавляет вывод в конец файла лога
  • 2>&1 перенаправляет ошибки туда же, где обычный вывод
  • Одноразовый запуск: at

    Если нужно запланировать одноразовый запуск команды, часто используют at.

    Справка:

  • at — man-страница
  • Примечание: at может быть не установлен по умолчанию.

    Systemd timers: расписание через systemd

    Systemd умеет запускать задачи по таймеру через пару unit-файлов:

  • something.service описывает, что запускать
  • something.timer описывает, когда запускать
  • Плюсы таймеров systemd в реальной практике:

  • единый подход к логам через journalctl
  • зависимости и порядок запуска можно описывать стандартными механизмами systemd
  • многие таймеры умеют запускать задачу “при следующей возможности”, если компьютер был выключен в нужный момент
  • Справка:

  • systemd.timer — man-страница
  • Практические рекомендации по безопасности и стабильности

  • Завершайте процессы сначала через SIGTERM, а SIGKILL используйте как крайний вариант.
  • Для служб предпочтительнее systemctl restart и просмотр логов через journalctl, чем “убить процесс” через kill.
  • Если команда работает в терминале, это ещё не значит, что она так же будет работать из cron, потому что среда и переменные отличаются.
  • Команды, влияющие на систему, выполняйте с sudo только при необходимости и понимании, что именно изменится.
  • Итоги

    В этой статье вы собрали базовую картину выполнения задач в Linux:

  • процесс — это запущенная программа с PID и владельцем
  • процессы смотрят через ps, top, pgrep, а управляют сигналами через kill и pkill
  • службы — это фоновые компоненты системы, которыми обычно управляют через systemctl
  • диагностика служб часто начинается с journalctl
  • задачи по расписанию выполняют через cron или через systemd timers
  • Эти знания дополняют предыдущие темы курса и готовят вас к более практическим сценариям: поддержка сервисов, автоматизация рутины и понимание, что происходит в системе при установке, обновлениях и настройках.

    6. Сеть в Linux: базовые настройки и диагностика

    Сеть в Linux: базовые настройки и диагностика

    Как эта тема связана с предыдущими

    В предыдущих статьях вы научились работать в терминале, понимать права доступа и использовать sudo, устанавливать пакеты и разбираться с процессами и службами через systemctl и journalctl.

    Сеть в Linux опирается на эти навыки напрямую:

  • диагностика сети почти всегда начинается с команд в терминале
  • часть действий требует прав администратора (sudo)
  • за подключение часто отвечают службы (например, NetworkManager или systemd-resolved), и их логи нужно уметь читать
  • Цель статьи: научиться понимать, что именно может быть “не так с интернетом”, и как быстро это проверить стандартными инструментами Linux.

    Базовые понятия: что нужно знать, чтобы не путаться

    !Схема показывает, через какие узлы проходит трафик и где чаще всего возникают проблемы

    Сетевой интерфейс

    Сетевой интерфейс — это “точка подключения” в системе.

  • проводной интерфейс часто называется eth0, enp0s3 и похожими именами
  • Wi‑Fi интерфейс часто называется wlan0, wlp2s0
  • loopback-интерфейс lo — это “сеть внутри компьютера” (нужна для работы многих программ)
  • IP-адрес

    IP-адрес — это адрес вашего компьютера в сети.

  • IPv4 выглядит как 192.168.1.10
  • IPv6 выглядит как 2001:db8::1
  • Чаще всего в домашней сети адрес выдает роутер через DHCP (вам не нужно задавать его вручную).

    Маска подсети и “локальная сеть”

    Обычно ваш IP относится к определённой подсети (например, 192.168.1.0/24). Практический смысл простой: устройства внутри одной подсети обычно могут общаться напрямую.

    Шлюз по умолчанию

    Шлюз (default gateway) — это обычно ваш роутер. Если нужно попасть “в интернет”, трафик уходит на шлюз.

    DNS

    DNS — это система, которая превращает имя (например, example.com) в IP-адрес.

    Важно различать:

  • “интернет есть, но сайты по именам не открываются” — часто проблема в DNS
  • “даже по IP ничего не открывается” — часто проблема в маршруте, шлюзе или блокировке
  • Какие компоненты в Linux отвечают за сеть

    Инструменты ядра и iproute2

    В большинстве дистрибутивов основной набор команд для просмотра сети — это ip и ss из пакета iproute2.

  • ip показывает интерфейсы, адреса и маршруты
  • ss показывает сетевые сокеты (какие порты слушаются, какие соединения установлены)
  • Справка:

  • ip (man7.org)
  • ss (man7.org)
  • Службы управления сетью

    В настольных Linux часто используется NetworkManager (особенно Ubuntu, Mint, Fedora Workstation). В серверных сценариях иногда встречаются systemd-networkd или другие решения.

    Практический вывод: если “что-то не поднимается”, полезно знать, какая служба управляет сетью, и смотреть её состояние и логи.

    Резолвер DNS

    Во многих современных системах DNS-частью управляет systemd-resolved. Для диагностики есть команда resolvectl.

    Справка:

  • resolvectl (man7.org)
  • Быстрая диагностика: типовая логика “интернет не работает”

    Надёжный подход — проверять сеть слоями: от “есть ли линк” до “работает ли DNS”.

    !Шпаргалка-процесс: что проверять и какими командами

    Проверка интерфейса и состояния “линка”

    Показать интерфейсы и их состояние:

    Что смотреть в выводе:

  • интерфейс должен быть в состоянии UP
  • для проводного подключения часто важно, чтобы был LOWER_UP (это признак “кабель подключен/линк поднят”)
  • Проверка IP-адреса

    Показать адреса на интерфейсах:

    Практически важные признаки:

  • на нужном интерфейсе должен быть IPv4 (или IPv6), если сеть его использует
  • адрес вида 169.254.x.x (IPv4) часто означает, что DHCP не сработал и система “самоназначила” адрес
  • Проверка маршрутов

    Посмотреть таблицу маршрутизации:

    Ключевое, что обычно нужно:

  • строка вида default via 192.168.1.1 dev ... означает, что есть маршрут по умолчанию через шлюз
  • Если маршрута default нет, интернет обычно работать не будет (даже если IP на интерфейсе есть).

    Проверка доступности по IP (без DNS)

    Проверить шлюз (обычно IP роутера из ip route):

    Проверить внешний IP (пример: публичный DNS Google):

    Если шлюз не пингуется:

  • часто проблема в Wi‑Fi/кабеле/настройках сети
  • Если шлюз пингуется, но внешний IP нет:

  • часто проблема “выхода в интернет” на роутере или у провайдера
  • иногда проблема в правилах файрвола или корпоративных ограничениях
  • Справка:

  • ping (man7.org)
  • Проверка DNS

    Проверить, резолвится ли имя:

    Альтернатива, которая часто есть почти везде:

    Если по IP доступ есть, а имена не резолвятся:

  • проблема почти всегда в DNS-настройках или в доступе к DNS-серверам
  • Полезно помнить про файл hosts, который может “переопределять” DNS:

    Диагностика маршрута: где “теряется” трафик

    Если ping до внешнего IP не проходит, полезно посмотреть, на каком участке пути проблема. Для этого используют traceroute.

    Установка (Debian/Ubuntu/Mint):

    Запуск:

    Как интерпретировать упрощённо:

  • первые “хопы” обычно ваш роутер и сеть провайдера
  • если “обрыв” на первом хопе, часто проблема в роутере или локальной сети
  • если “обрыв” дальше, часто проблема на стороне провайдера или в маршрутизации
  • Справка:

  • traceroute (man7.org)
  • Проверка портов и соединений: когда “сеть есть”, но сервис не работает

    Иногда интернет работает, DNS работает, но конкретное приложение не подключается. Тогда важны порты.

    ss: что слушает порты на вашем компьютере

    Показать TCP-порты, которые “слушаются” (то есть сервис ожидает подключения):

    Показать UDP:

    Что смотреть:

  • есть ли нужный порт в списке
  • какой процесс его занял
  • Если ожидаемый сервис не слушает порт, это уже не “сетевая проблема”, а проблема запуска службы или конфигурации приложения (возвращайтесь к статье про systemctl и journalctl).

    Проверка доступности HTTP/HTTPS

    Очень практичная проверка “доступа до сайта” (и заодно DNS):

  • опция -I запрашивает только заголовки
  • если DNS не работает, будет ошибка резолва
  • если есть блокировки TLS/прокси, это часто тоже будет видно по ошибке
  • Если curl не установлен:

    Справка:

  • curl documentation
  • Базовые настройки сети: что можно менять и где это делается

    Новичку важно понимать границы:

  • в большинстве случаев на десктопе всё настраивается через NetworkManager (GUI или nmcli)
  • ручное редактирование системных файлов стоит делать только когда вы понимаете, кто ими управляет
  • NetworkManager и nmcli

    nmcli — командная утилита для управления NetworkManager.

    Проверить, что NetworkManager запущен:

    Посмотреть список устройств и их состояние:

    Посмотреть активные подключения:

    Подключиться к Wi‑Fi из терминала (общая идея):

    Справка:

  • nmcli (manpages.debian.org)
  • Где в системе “живут” DNS-настройки

    В зависимости от дистрибутива и конфигурации, реальный файл /etc/resolv.conf может быть:

  • обычным файлом
  • символической ссылкой на файл, который генерирует systemd-resolved
  • Быстро проверить:

    Посмотреть текущие DNS-данные через systemd:

    Практический совет: если вы используете NetworkManager и systemd-resolved, менять /etc/resolv.conf вручную обычно бессмысленно, потому что его перезапишут.

    Файрвол: частая причина “порт не доступен”

    На Linux входящие подключения могут блокироваться файрволом. На Ubuntu и похожих системах часто встречается ufw как более простой интерфейс.

    Проверить статус:

    Разрешить входящий SSH (пример):

    Включить ufw (делайте это осознанно, особенно на удалённых машинах):

    Справка:

  • ufw (manpages.ubuntu.com)
  • Важно:

  • файрвол влияет на входящие и иногда исходящие соединения
  • если вы работаете по SSH на удалённой машине, ошибка в настройке файрвола может “отрезать” доступ
  • Логи сети: куда смотреть, если “само не чинится”

    Если проблема не очевидна по ip и ping, переходите к логам служб.

    NetworkManager

    systemd-resolved (DNS)

    Общие сообщения ядра про сеть

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

    Если вы видите ошибки про “firmware missing” или постоянные переподключения, проблема может быть на уровне драйвера.

    Практический чек-лист: что собрать перед обращением за помощью

    Если вы просите помощи (на работе, в чате, на форуме), полезно сразу собрать “минимальный пакет” информации.

  • ip link
  • ip addr
  • ip route
  • resolvectl status (или хотя бы cat /etc/resolv.conf)
  • ping -c 2 <шлюз>
  • ping -c 2 8.8.8.8
  • resolvectl query example.com или getent hosts example.com
  • Так вы быстро отделите проблему интерфейса, маршрута и DNS.

    Итоги

    В этой статье вы освоили базовую “схему мышления” про сеть в Linux:

  • сеть диагностируют слоями: интерфейс, IP, маршрут, доступ по IP, DNS, порты
  • ключевые команды: ip, ping, traceroute, ss, resolvectl, curl
  • сетевыми настройками на десктопе часто управляет служба NetworkManager, а DNS — systemd-resolved
  • для сложных случаев важны логи служб через journalctl
  • Эти навыки хорошо дополняют предыдущие темы курса: вы используете командную строку, права доступа и понимание служб, чтобы уверенно находить причину сетевых проблем и исправлять их безопасно.

    7. Безопасность и резервное копирование: основы

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

    Как эта тема связана с предыдущими

    Ранее в курсе вы научились:

  • работать в терминале и с файловой системой
  • понимать права доступа, пользователей, группы и sudo
  • устанавливать обновления через пакетный менеджер
  • смотреть процессы и службы через ps, systemctl, journalctl
  • диагностировать сеть и базово работать с файрволом
  • Безопасность в Linux складывается именно из этих навыков: вы ограничиваете права, своевременно обновляете систему, контролируете сетевую поверхность и умеете быстро понять, что происходит. Резервное копирование дополняет безопасность: даже при ошибке, поломке диска или компрометации вы сохраняете данные и можете восстановиться.

    Цель статьи: дать вам практическую базу, с которой можно жить на домашнем ПК, на учебной VM и на сервере.

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

    Чтобы защищаться осмысленно, полезно понимать, от чего вы защищаетесь.

    Частые проблемы:

  • случайное удаление файлов и папок
  • шифровальщик или другое вредоносное ПО
  • утечка паролей и доступов
  • неправильные права на файлы и каталоги
  • открытые в сеть сервисы “по умолчанию”
  • потеря устройства или поломка диска
  • Практический вывод: безопасность в Linux это не одна “волшебная настройка”, а набор привычек и минимальных правил.

    Принципы безопасности, которые работают почти всегда

    Принцип наименьших привилегий

    Идея: давайте пользователям и программам только те права, которые нужны для работы, и не больше.

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

  • работайте обычным пользователем, а sudo используйте только для конкретной команды
  • не делайте файлы и каталоги “доступными всем” без необходимости
  • не запускайте сервисы от имени root, если разработчик предусмотрел отдельного системного пользователя
  • Связь с предыдущей статьёй про права: ошибки вроде Permission denied часто сигнализируют не “помеху”, а защиту, которая сейчас спасает от случайной порчи системы.

    Обновления как часть безопасности

    Обновления исправляют уязвимости так же, как исправляют ошибки.

    Для Debian/Ubuntu/Mint типовой минимум:

    Важно:

  • ставьте обновления из репозиториев вашего дистрибутива
  • не добавляйте сторонние репозитории без понимания, зачем они нужны
  • Справка по apt: apt

    Минимизация лишнего

    Чем меньше установлено и запущено, тем меньше потенциальных точек атаки.

    Практические привычки:

  • удаляйте пакеты, которые точно не нужны: sudo apt autoremove
  • проверяйте, какие сервисы запущены: systemctl --type=service --state=running
  • проверяйте, какие порты слушаются: ss -lntp
  • Справка по ss: ss

    Учётные записи, пароли и sudo

    Не работайте постоянно под root

    Постоянная работа под root делает любую опечатку дорогой.

    Правильный подход:

  • обычные действия делайте обычным пользователем
  • админские действия выполняйте через sudo
  • Проверить, кто вы:

    Пароли и менеджеры паролей

    Правила для реальной жизни:

  • длинный уникальный пароль лучше “сложного, но короткого”
  • один пароль на все сервисы это почти гарантированная проблема
  • менеджер паролей снижает риск повторного использования паролей
  • Аккуратнее с правами на приватные файлы

    Частый пример: SSH-ключи, токены, конфиги с паролями.

    Приватный файл обычно должен быть доступен только владельцу:

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

    Справка по chmod: chmod

    Сеть и “поверхность атаки”

    Проверяйте, что реально доступно из сети

    Основная идея: сервис “не ломают”, если он недоступен.

    Проверка локально:

    Что смотреть:

  • какие адреса слушаются: 0.0.0.0 и :: означают “все интерфейсы”, то есть потенциально доступно из сети
  • какой процесс открыл порт
  • Если вы не ожидали, что какой-то сервис слушает порт, выясните почему он запущен и нужен ли он.

    Файрвол как базовый контроль

    На Ubuntu часто используют ufw.

    Проверка статуса:

    Включать файрвол на удалённой машине по SSH нужно осторожно, чтобы не потерять доступ.

    Справка: ufw

    Логи и наблюдаемость: как понять, что “что-то происходит”

    Логи помогают не только чинить, но и замечать подозрительные события.

    Минимальный набор:

  • логи служб: journalctl -u <service> -b
  • системный журнал текущей загрузки: journalctl -b
  • история входов в систему: last
  • Примеры:

    Справка по journalctl: journalctl

    Резервное копирование: что это и почему без него “небезопасно”

    Резервная копия это возможность вернуться к рабочему состоянию после:

  • ошибки пользователя
  • сбоя диска
  • неудачного обновления
  • заражения и шифрования данных
  • Ключевая мысль: резервное копирование это не файл “где-то рядом”, а продуманная система хранения и восстановления.

    Правило 3-2-1

    Популярный практический ориентир: 3-2-1.

  • 3 копии данных
  • 2 разных типа носителей
  • 1 копия вне вашего компьютера
  • Подробное описание идеи можно найти здесь: Backup

    !Схема, помогающая запомнить правило 3-2-1

    Что именно бэкапить

    Обычно важнее всего:

  • домашний каталог пользователя: ~/Documents, ~/Projects, фото, заметки
  • настройки, если они критичны: часть ~/.config
  • на сервере: данные приложений и конфиги в /etc плюс данные в /var/lib
  • Не всегда имеет смысл копировать:

  • временные файлы
  • кэш браузеров
  • большие каталоги, которые легко восстановить из интернета и не содержат уникальных данных
  • Типы резервных копий

    Практически встречаются такие варианты:

  • полная копия: всё целиком
  • инкрементальная: копируются изменения с момента последней копии
  • Инкрементальные копии быстрее и экономнее, но требуют дисциплины и проверки восстановления.

    Инструменты резервного копирования в Linux

    rsync для копирования каталогов

    rsync умеет копировать изменения и сохранять структуру каталогов.

    Пример “скопировать документы на внешний диск”:

  • -n означает “ничего не менять, только показать действия”
  • Справка: rsync

    tar для архивов

    tar полезен, когда вы хотите получить один архивный файл.

    Пример создания сжатого архива:

    Идея команды:

  • -c создать архив
  • -z сжать через gzip
  • -f указать имя файла архива
  • -C ~ сначала перейти в домашний каталог, чтобы пути внутри архива были аккуратными
  • Проверка содержимого архива без распаковки:

    Справка: tar

    Специализированные инструменты

    Если вам нужна дедупликация, шифрование и удобные политики хранения, часто используют отдельные утилиты.

    Примеры:

  • BorgBackup: BorgBackup
  • restic: restic
  • На старте курса достаточно уверенно понимать логику: “что копирую, куда копирую, как проверяю, как восстанавливаю”.

    Где хранить бэкапы и как защитить их

    Внешний диск и отдельные права

    Если резервная копия лежит на том же диске, что и исходные данные, то при поломке диска вы потеряете всё.

    Минимальный вариант:

  • внешний HDD или SSD
  • отдельная папка под бэкапы
  • ограниченные права на доступ
  • Пример: создать каталог и закрыть его от других пользователей:

    Шифрование как защита от потери устройства

    Если вы храните бэкапы на переносном носителе, риск “потерял диск” вполне реален. Тогда имеет смысл шифрование.

    Два типовых подхода:

  • шифрование всего диска на уровне файловой системы или раздела
  • шифрование конкретных архивов
  • Шифрование архивов часто делают через gpg.

    Справка: gpg

    Важно: если вы потеряете пароль шифрования, восстановить данные будет почти невозможно. Храните пароль безопасно.

    Автоматизация: чтобы бэкап делался сам

    В прошлой статье вы изучили cron и systemd timers. Резервное копирование отличный кандидат для расписания.

    Подход для новичка:

  • Сначала сделайте ручной бэкап и восстановление в тестовую папку.
  • Затем автоматизируйте.
  • !Диаграмма, показывающая полный цикл: планирование, копирование, хранение, проверка

    Пример простого скрипта backup.sh для каталога ~/Documents:

    Если вы храните архивы, проверяйте хотя бы список файлов внутри:

    Если случился инцидент: базовый план действий

    Если вы подозреваете компрометацию или заражение:

  • По возможности отключите компьютер от сети.
  • Зафиксируйте симптомы: какие окна, процессы, сообщения об ошибках.
  • Посмотрите подозрительные процессы и автозапуск служб: ps aux, systemctl --failed, systemctl --type=service --state=running.
  • Посмотрите логи: journalctl -b и логи конкретных сервисов.
  • Смените пароли и ключи с безопасного устройства.
  • Восстанавливайтесь из резервной копии, которой вы доверяете.
  • Важно: “лечить” систему вручную часто сложнее и рискованнее, чем переустановка и восстановление данных из хорошего бэкапа.

    Итоги

    Теперь у вас есть основа практической безопасности в Linux:

  • принцип наименьших привилегий и аккуратная работа с sudo
  • обновления и минимизация лишнего как фундамент защиты
  • контроль сетевой поверхности через ss и файрвол
  • понимание роли логов и journalctl
  • резервное копирование как обязательная часть устойчивости
  • базовые инструменты бэкапов: rsync и tar, а также проверка восстановления
  • Эта тема логично продолжает предыдущие: безопасность это применение прав доступа, управления пакетами, службами и сетью в одном целостном сценарии.