Интерактивная Лабораторная: Основы Linux

Учимся работать в терминале: от навигации и управления пакетами до монтирования дисков и создания образов.

🖥️ Ваше Окружение

Все команды предназначены для выполнения в терминале (командной строке) Linux. Примеры с sudo требуют прав администратора (root).

1. Навигация и Работа с Файлами

Основа основ. Учимся "ходить" по папкам и управлять файлами.

  • Определите текущий каталог: `pwd` (Print Working Directory) покажет, где вы сейчас находитесь.

    pwd
  • Перейдите в домашний каталог: `cd` (Change Directory). Символ `~` (тильда) — это псевдоним вашего домашнего каталога (напр., `/home/username`).

    cd ~
  • Просмотрите содержимое папки: `ls` (List).

    ls -la
    Что значат флаги -la?
    • -l: **Long** format (длинный формат). Показывает права доступа, владельца, размер файла и дату.
    • -a: **All** (все). Показывает скрытые файлы и каталоги (те, что начинаются с точки, например `.bashrc`).
  • Создайте каталог и перейдите в него: `mkdir` (Make Directory).

    mkdir lab_fs
    cd lab_fs
  • Создайте файл: `touch` "касается" файла. Если его нет, он создается. Если он есть, у него обновляется время последнего изменения.

    touch test.txt
  • Запись в файл: `echo` выводит текст. Знак `>` — это **перенаправление вывода**. Он берет вывод `echo` и *перезаписывает* им файл `test.txt`.

    echo "Hello Linux!" > test.txt
  • Копирование: `cp` (Copy).

    cp test.txt copy.txt
  • Переименование/Перемещение: `mv` (Move). В Linux нет отдельной команды "rename", для этого используется `mv`.

    mv copy.txt renamed.txt
  • Измените права доступа: `chmod` (Change Mode).

    chmod 644 test.txt
    Как читать права "644"?

    Права задаются для трех категорий: **Владелец**, **Группа**, **Остальные**.

    Цифры — это сумма "весов":

    • r (read / чтение) = 4
    • w (write / запись) = 2
    • x (execute / выполнение) = 1

    Таким образом, 644 означает:

    • Владелец: 6 (4+2) = Чтение + Запись
    • Группа: 4 = Только Чтение
    • Остальные: 4 = Только Чтение

🚀 ЧЕЛЛЕНДЖ:

1. Вернитесь в домашний каталог (используя `..` или `~`).
2. Создайте каталог `lab_trash`.
3. Переместите `lab_fs/renamed.txt` в `lab_trash/`.
4. Удалите каталог `lab_fs` (команда `rmdir lab_fs`).

2. Работа с Пакетами (Управление ПО)

Что такое менеджер пакетов?

Это ваш "App Store" для терминала. Он следит за ПО, его зависимостями и обновлениями. apt используется в Debian/Ubuntu, dnf (или `yum`) — в Fedora/CentOS/RHEL.

Для Debian/Ubuntu/Kali (apt)

  • Обновите список пакетов: `apt update` *не обновляет ПО*. Он лишь скачивает свежий "каталог" доступных версий из репозиториев (источников ПО).

    sudo apt update
  • Обновите систему: `apt upgrade` сравнивает ваш установленный софт со свежим "каталогом" и скачивает/устанавливает новые версии.

    sudo apt upgrade -y
    Что значит флаг -y?

    Означает **"Yes"** (Да). Без него `apt` спросит вас: "Вы уверены, что хотите установить N пакетов (M мегабайт)?" Флаг `-y` автоматически отвечает "Да" на этот вопрос. Удобно для скриптов.

  • Установите ПО: (напр. `htop` - крутой монитор процессов).

    sudo apt install htop
  • Удалите программу:

    sudo apt remove htop
💡 Про-совет: Как очистить систему?

После `remove` часто остаются "осиротевшие" зависимости (пакеты, которые были нужны `htop`, но теперь не нужны никому). Команда `autoremove` их подчищает:

sudo apt autoremove

🚀 ЧЕЛЛЕНДЖ:

1. Установите пакет `neofetch`.
2. Запустите его (просто введите `neofetch`).
3. Посмотрите, что он выводит.
4. Удалите `neofetch` И очистите зависимости (`autoremove`).

3. Работа с Файловыми Системами

Как узнать, сколько места осталось на диске, и как "подключить" флешку или образ.

  • Посмотреть информацию о дисках: `df` (Disk Free). Флаг `-h` (Human-readable) показывает размеры в Гб/Мб, а не в байтах.

    df -h
  • Просмотреть размер каталога: `du` (Disk Usage). Флаг `-s` (Summarize) показывает только итог, а не размер каждого под-файла. `-h` также для "человеческого" вида.

    du -sh ~

Монтирование устройства

Что такое "монтирование"?

В Linux нет "Диска C:" или "Диска D:". Все является частью единого дерева каталогов, начиная с корня (`/`).

Монтирование — это процесс "прикрепления" файловой системы (флешки, диска, ISO-образа) к существующему пустому каталогу (точке монтирования).

Например, вы прикрепляете флешку (`/dev/sdb1`) к папке (`/mnt/my_flash`). После этого, зайдя в `/mnt/my_flash`, вы увидите содержимое флешки.

  • Создайте точку монтирования (просто пустой каталог):

    sudo mkdir /mnt/testdisk
  • Смонтируйте (пример для ISO-образа):

    sudo mount /path/to/file.iso /mnt/testdisk
  • Размонтируйте:

    sudo umount /mnt/testdisk

⚠️ Важно!

Нельзя размонтировать устройство, если вы (или другой процесс) сейчас находитесь в точке монтирования. Терминал выдаст ошибку "target is busy". Сначала выйдите из каталога (`cd ..`), а потом размонтируйте.

4. Создание Образа Диска (dd)

`dd` — невероятно мощная, но и опасная утилита. Она побайтово копирует всё, что угодно, куда угодно.

⚠️ КРИТИЧЕСКОЕ ПРЕДУПРЕЖДЕНИЕ ⚠️

Команду `dd` называют "Disk Destroyer" (Уничтожитель Дисков). Если вы перепутаете `if` (вход) и `of` (выход), вы можете **мгновенно и безвозвратно стереть свой основной диск.**

Никогда не запускайте: dd if=... of=/dev/sda (если `/dev/sda` — ваш системный диск). Проверяйте команду трижды.

  • Создаём файл-образ: Мы создадим файл `disk.img` размером 100МБ, заполнив его нулями из специального "устройства" `/dev/zero` (бесконечный источник нулей).

    dd if=/dev/zero of=disk.img bs=1M count=100
    Разбор параметров dd
    • if (Input File): Входной файл (источник). У нас это `/dev/zero`.
    • of (Output File): Выходной файл (назначение). У нас это `disk.img` в текущей папке.
    • bs (Block Size): Размер "куска" для копирования. `1M` = 1 Мегабайт.
    • count: Количество "кусков".

    Итого: скопировать 100 кусков по 1МБ = 100МБ.

5. Работа с Архивами (tar)

`tar` (Tape Archive) — стандартная утилита для архивации. Важно понимать: `tar` *объединяет* файлы в один, а `gzip` *сжимает* файл. Часто их используют вместе (`.tar.gz`).

Как запомнить флаги tar?

Флаги `tar` — это мнемоника:

  • -c: **C**reate (Создать архив)
  • -x: **E**xtract (Извлечь из архива)
  • -v: **V**erbose (Показывать, что делаешь)
  • -f: **F**ile (Указать имя файла архива). Этот флаг почти всегда идет последним.
  • -z: **G**zip (Сжать/Разжать с помощью gzip).
  • Создайте архив (без сжатия) из текущей папки (`.`):

    tar -cvf archive.tar .
  • Распакуйте архив:

    tar -xvf archive.tar
  • Создайте СЖАТЫЙ архив (добавлен флаг `z`):

    tar -czvf archive.tar.gz .
  • Распакуйте СЖАТЫЙ архив (флаг `z` на месте):

    tar -xzvf archive.tar.gz
  • Сжатие/Распаковка одного файла (без tar):

    # Сжать (test.txt исчезнет, появится test.txt.gz)
    gzip test.txt
    
    # Распаковать (test.txt.gz исчезнет, появится test.txt)
    gunzip test.txt.gz

🚀 ФИНАЛЬНЫЙ ЧЕЛЛЕНДЖ:

1. Создайте два файла: `file1.log` и `file2.log`.
2. Наполните их текстом с помощью `echo`.
3. Создайте каталог `logs`.
4. Создайте **сжатый** архив `logs.tar.gz`, который содержит **только** каталог `logs` (вместе с файлами внутри).