February 5, 2025

Linux 

1. Основы Linux

    1. Архитектура Linux (BIOS/UEFI → GRUB → Ядро → Init-система)
    2. Базовые команды (ls, cd, cp, mv, rm, mkdir, touch)
    3. Работа с файлами и директориями
    4. Права доступа (chmod, chown)
    5. Владение текстовыми редакторами (vi/vim, nano)

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

  1. Создай директорию /home/user/test и добавь туда несколько файлов.
  2. Измени права доступа так, чтобы только владелец мог читать и писать файлы.
  3. Перемести один из файлов в другую директорию, используя относительный путь.
  4. Установи текстовый редактор vim и создай простой скрипт, который выводит "Hello, World!".

2. Управление процессами

    1. Команды: ps, top, htop, kill, nice, renice
    2. Статусы процессов (R, S, Z, D)
    3. Как работают процессы и потоки
    4. Что такое зомби-процессы и как с ними бороться

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

  1. Запусти несколько процессов (например, бесконечные циклы в bash).
  2. Найди эти процессы с помощью ps aux | grep имя_процесса.
  3. Отправь сигнал SIGTERM одному из них, а затем SIGKILL другому.
  4. Создай зомби-процесс:
# В терминале 1:
$ ./zombie.sh &

# В терминале 2:
$ ps aux | grep zombie

Убедись, что процесс имеет статус Z, и попробуй убить его родителя.


3. Файловая система

    1. Типы файловых систем (ext4, XFS)
    2. Монтирование дисков (mount, umount)
    3. Журналирование и inode
    4. Разница между хардлинками и симлинками

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

Практика:

  1. Создай новый диск (например, в VirtualBox) и смонтируй его в /mnt/newdisk.
  2. Создай хардлинк и симлинк для файла /etc/passwd:
ln /etc/passwd /tmp/hardlink_passwd
ln -s /etc/passwd /tmp/symlink_passwd

Проверь количество inode для оригинального файла и хардлинка:

ls -i /etc/passwd /tmp/hardlink_passwd

4. Управление памятью

    1. Что такое RAM, swap, cache
    2. Команды: free, vmstat, dmesg
    3. Как работает OOM Killer
    4. Load Average и его значение

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

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

free -h

2. Запусти стресс-тест для загрузки памяти:

stress --vm 1 --vm-bytes 512M --timeout 60s

Наблюдай за изменением показателей с помощью top или htop.

3. Исследуй логи системы после активации OOM Killer:

dmesg | grep -i kill

5. Сетевые настройки

    1. Базовые сетевые команды (ip, ifconfig, netstat, ss, ping, traceroute)
    2. TCP/IP стек (DNS, HTTP, HTTPS)
    3. Разница между TCP и UDP
    4. Как работает трехэтапное рукопожатие TCP

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

1. Настрой IP-адрес для интерфейса:

sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip link set eth0 up

2. Проверь соединение с внешним сервером:

ping google.com
traceroute google.com

6. Systemd и управление сервисами

    1. Как работает systemd
    2. Команды: systemctl, journalctl
    3. Создание и настройка unit-файлов
    4. Автозагрузка сервисов

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

Создай простой сервис, который запускает скрипт каждые 5 минут:

1. Создай файл /etc/systemd/system/mytimer.service

[Unit]
Description=My Timer Service
[Service]
ExecStart=/bin/bash /home/user/myscript.sh

2. Создай таймер /etc/systemd/system/mytimer.timer:

[Unit]
Description=Run My Script Every 5 Minutes

[Timer]
OnCalendar=*:*:0/5
Persistent=true

[Install]
WantedBy=timers.target

3. Активируй таймер:

sudo systemctl enable mytimer.timer
sudo systemctl start mytimer.timer

4. Просмотри логи работы сервиса.

journalctl -u mytimer.service

7. Мониторинг производительности

    1. Инструменты: iostat, iotop, sar, dstat
    2. Как анализировать нагрузку на CPU, память, диск и сеть
    3. Load Average и его расшифровка

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

1. Запусти стресс-тест для загрузки CPU:

stress --cpu 4 --timeout 60s

Наблюдай за нагрузкой с помощью htop или iostat -x 1.

Проверь использование диска c помощью iotop

8. Безопасность

    1. SELinux и AppArmor
    2. SSH и SSH-ключи
    3. Ограничения cgroups

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

1. Настрой безопасное SSH-соединение:

Сгенерируй пару ключей:

ssh-keygen -t rsa -b 4096

Добавь публичный ключ на удаленный сервер:

ssh-copy-id user@remote_host

Отключи авторизацию по паролю в /etc/ssh/sshd_config:

PasswordAuthentication no

Перезапусти SSH-сервер:

sudo systemctl restart sshd

2. Создай правила SELinux для любого приложения.

Материалы для изучения:

  1. Основы Linux:
  1. Управление процессами:
  1. Файловая система:
  1. Управление памятью:
  1. Сетевые настройки:
  1. Systemd:
  1. Мониторинг производительности:
  1. Безопасность:

Дополнительные бесплатные ресурсы: