Тема II

Операційна система GNU/Linux та Shell BASH

Основи архітектури Unix-подібних систем, огляд популярних дистрибутивів, довідник команд CLI та розробка BASH-скрипту текстової авторизації.


Linux Tux Logo Bash Logo

1. Коротка інформація про ОС GNU/Linux

GNU/Linux — це вільна, відкрита (Open Source) Unix-подібна операційна система, побудована на базі ядра Linux, створеного Лінусом Торвальдсом у 1991 році, та системних утиліт і бібліотек проекту GNU (Free Software Foundation).

Архітектура Linux відрізняється високим рівнем модульності, надійності та безпеки. Основні компоненти включають ядро (Kernel), командну оболонку (Shell), системні бібліотеки (glibc) та користувацькі утиліти. Linux є стандартом де-факто для сучасних хмарних обчислень, суперкомп'ютерів (100% зі списку TOP500), веб-серверів, Docker-контейнерів, мобільних ОС (Android) та вбудованих систем (IoT).

2. Популярні дистрибутиви Linux

Дистрибутив Linux — це готова операційна система, яка об'єднує ядро Linux, системні утиліти, менеджер пакетів та графічне або текстове середовище.

Ubuntu

Ubuntu

Найпопулярніший дистрибутив на базі Debian для робочих станцій та серверів. Відрізняється дружнім інтерфейсом та величезною спільнотою.

Debian

Debian

Один із найстаріших і найстабільніших дистрибутивів із суворими стандартами вільного ПЗ. Слугує основою для Ubuntu, Linux Mint та інших ОС.

Fedora

Fedora / RHEL

Інноваційна платформа від Red Hat. RHEL (Red Hat Enterprise Linux) є корпоративним стандартом для банківських та системних інфраструктур.

Arch Linux

Arch Linux

Легковагий дистрибутив для досвідчених користувачів з принципом "KISS" (Keep It Simple, Stupid) та оновленням за моделью Rolling Release.

Alpine Linux

Alpine Linux

Ультралегка та безпечна ОС розміром усього ~5 МБ на базі musl libc та BusyBox. Стандарт для створення Docker-контейнерів.

Kali Linux

Kali Linux

Спеціалізований дистрибутив для фахівців із кібербезпеки, що містить сотні попередньо встановлених інструментів для пентестингу.

3. Приклади команд роботи в Linux CLI

Основні базові команди командного інтерфейсу (Command Line Interface), необхідні для орієнтування, маніпуляції файлами та управління системою:

# Команда Призначення та опис
1
pwd
Print Working Directory: виводить абсолютний шлях до поточного робочого каталогу сесії.
2
echo <text>
Виводить рядок тексту або значення змінної оточення у стандартний потік виводу терміналу.
3
ls -la
List Directory: відображає вміст каталогу (прапорці -l — детальний список, -a — включаючи приховані файли).
4
cd <dir>
Change Directory: змінює поточний робочий каталог (наприклад, cd .. переходить на рівень вище).
5
touch <file>
Створює новий порожній файл або оновлює часову мітку останнього доступу до існуючого файлу.
6
mkdir -p <path>
Make Directory: створює нову директорію (прапорець -p створює повний ланцюжок батьківських папок).
7
cp <src> <dest>
Copy: копіює файли або директорії (для папок використовується рекурсивний прапорець cp -r).
8
mv <src> <dest>
Move: переміщує або перейменовує файли та директорії в файловій системі.
9
rm -rf <path>
Remove: видаляє файли або папки (прапорці -r рекурсивно, -f примусово без запиту підтвердження).
10
history
Виводить номерний список останніх виконаних команд у командній оболонці BASH.

4. BASH-скрипт аутентифікації у текстовому режимі

Нижче наведено практичний BASH-скрипт (auth.sh), який моделює процес автентифікації користувача в консолі Linux. Скрипт запитує логін і пароль (із приховуванням введення read -s), перевіряє їх та надає або блокує доступ.

📄 auth.sh (BASH Script)
#!/bin/bash
# Скрипт авторизації користувача у текстовому режимі
VALID_USER="admin"
VALID_PASS="secret123"
MAX_ATTEMPTS=3
attempt=1

echo "=========================================="
echo "   СИСТЕМА АВТОРИЗАЦІЇ LINUX (BASH CLI)   "
echo "=========================================="

while [ $attempt -le $MAX_ATTEMPTS ]; do
    echo -n "Введіть ім'я користувача: "
    read username

    echo -n "Введіть пароль: "
    read -s password
    echo ""

    if [ "$username" = "$VALID_USER" ] && [ "$password" = "$VALID_PASS" ]; then
        echo "[УСПІХ] Авторизація успішна! Ласкаво просимо, $username."
        exit 0
    else
        echo "[ПОМИЛКА] Невірне ім'я користувача або пароль."
        attempts_left=$((MAX_ATTEMPTS - attempt))
        if [ $attempts_left -gt 0 ]; then
            echo "Залишилось спроб: $attempts_left"
            echo "------------------------------------------"
        fi
    fi
    attempt=$((attempt + 1))
done

echo "[БЛОКУВАННЯ] Перевищено кількість спроб. Доступ заборонено."
exit 1

💻 Інтерактивна демонстрація роботи BASH-скрипту

Ви можете протестувати виконання даного скрипту безпосередньо у веб-терміналі нижче (Тестові дані: логін: admin, пароль: secret123):

bash auth.sh — 80x24
==========================================
СИСТЕМА АВТОРИЗАЦІЇ LINUX (BASH CLI)
==========================================
Введіть ім'я користувача:

5. Джерела інформації по темі