← На головну
операційні системи / linux

У Linux усе — це файл.

GNU/Linux — вільна Unix-подібна операційна система, на якій працюють більшість серверів інтернету, суперкомп'ютери, Android-смартфони та мільйони робочих станцій.

student@ubuntu — bash
$ uname -o
GNU/Linux
$ whoami
student
$ ls /
bin  boot  dev  etc  home  lib
proc  root  tmp  usr  var
$ 

01Коротко про GNU/Linux

Історія системи складається з двох частин. У 1983 році Річард Столлман заснував проєкт GNU, мета якого — створити повністю вільну операційну систему. До початку 1990-х було готово майже все: компілятор, оболонка, утиліти, — бракувало лише ядра. У 1991 році фінський студент Лінус Торвальдс опублікував власне ядро Linux, і разом ці частини утворили повноцінну ОС — тому її правильна назва GNU/Linux.

Linux поширюється під ліцензією GNU GPL: будь-хто може використовувати, вивчати, змінювати й поширювати код. Саме тому існують сотні дистрибутивів — готових збірок, які поєднують ядро, системні утиліти, менеджер пакетів і графічне середовище.

→

Ядро (kernel)

Керує процесором, пам'яттю, пристроями та процесами. Посередник між «залізом» і програмами.

→

Оболонка (shell)

Командний інтерпретатор, найчастіше Bash. Приймає команди користувача та запускає програми.

→

Файлова система

Єдине дерево каталогів від кореня /. Диски, флешки й навіть пристрої підключаються як частини цього дерева.

→

Багатокористувацькість

Кожен користувач має власний каталог і права доступу; адміністратор — користувач root.

02Популярні дистрибутиви

Дистрибутив — це ядро Linux плюс набір програм, менеджер пакетів і налаштування, зібрані в готову до встановлення систему.

Ubuntu

apt

Найпопулярніший дистрибутив для початківців і серверів. Виходить кожні пів року, LTS-версії підтримуються 5 років.

родина Debian · Canonical

Debian

apt

Один із найстаріших (з 1993 р.) і найстабільніших дистрибутивів. Основа для Ubuntu, Mint та багатьох інших.

незалежний · спільнота

Linux Mint

apt

Зручний перехід із Windows: знайомий вигляд робочого столу Cinnamon і все необхідне одразу після встановлення.

родина Ubuntu · спільнота

Fedora

dnf

Сучасні версії програм і нові технології раніше за інших. Полігон для Red Hat Enterprise Linux.

родина Red Hat · спільнота

Arch Linux

pacman

Мінімалістична система, яку користувач збирає сам. Безперервні оновлення (rolling release) та відома вікі-документація.

незалежний · спільнота

openSUSE

zypper

Має дві гілки: стабільну Leap і rolling-версію Tumbleweed. Потужний інструмент налаштування YaST.

незалежний · SUSE

Для серверів також поширені Red Hat Enterprise Linux, Rocky Linux та AlmaLinux, для тестування безпеки — Kali Linux.

03Команди Linux CLI

Десять базових команд для навігації та роботи з файлами в терміналі.

student@ubuntu — bash
# створюємо проєкт, копіюємо й перейменовуємо файли
$ pwd
/home/student
$ mkdir -p practice/docs
$ cd practice
$ touch notes.txt
$ echo "Привіт, Linux!" > notes.txt
$ cp notes.txt docs/backup.txt
$ mv notes.txt readme.txt
$ ls -l
drwxr-xr-x 2 student student 4096 Sep 27 12:10 docs
-rw-r--r-- 1 student student   27 Sep 27 12:10 readme.txt
$ rm docs/backup.txt
$ history 3
  9  ls -l
 10  rm docs/backup.txt
 11  history 3
01pwdPrint Working Directory — показує повний шлях до поточного каталогу.
02echo "текст"Виводить текст або значення змінної, напр. echo $HOME. З > записує текст у файл.
03ls -laПоказує вміст каталогу. -l — детальний список, -a — разом із прихованими файлами.
04cd [каталог]Переходить до іншого каталогу. cd .. — на рівень вище, cd ~ — у домашній.
05touch [файл]Створює порожній файл або оновлює час зміни існуючого.
06mkdir -p [шлях]Створює каталог. З -p — одразу всю вкладену структуру.
07cp [звідки] [куди]Копіює файли. Для каталогів потрібен ключ -r (рекурсивно).
08mv [звідки] [куди]Переміщує файл або каталог; у межах одного каталогу — перейменовує.
09rm [файл]Видаляє файл без кошика. rm -r — каталог із вмістом. Використовуйте обережно.
10historyПоказує список раніше введених команд; !n повторює команду з номером n.

04BASH-скрипт авторизації

Скрипт імітує вхід у систему в текстовому режимі, як у консолі tty: запитує логін і пароль, приховує введення пароля, дає три спроби, а потім блокує доступ. Пароль у скрипті зберігається не відкритим текстом, а у вигляді хешу SHA-256 — так роблять і справжні системи у файлі /etc/shadow.

#!/usr/bin/env bash
# auth.sh — імітація авторизації в системі в текстовому режимі
# Тестовий обліковий запис:  student / linux123

USERNAME="student"
# Пароль не зберігаємо відкритим текстом — лише його SHA-256 хеш
PASS_HASH="791e4e58b732fdf54ab99f052d4e99d058fbe4bdd74e3463b8535e04d3d2da9d"
MAX_TRIES=3
HOST=$(hostname)

clear
echo "GNU/Linux 6.8.0 ${HOST} tty1"
echo

for (( try = 1; try <= MAX_TRIES; try++ )); do
    read -r -p "${HOST} login: " login
    read -r -s -p "Password: " password     # -s — символи не відображаються
    echo

    input_hash=$(printf '%s' "$password" | sha256sum | cut -d ' ' -f 1)

    if [[ "$login" == "$USERNAME" && "$input_hash" == "$PASS_HASH" ]]; then
        echo
        echo "Last login: $(date '+%a %b %d %H:%M:%S %Y') on tty1"
        echo "Вітаємо, ${login}! Вхід виконано успішно."
        echo "Домашній каталог: /home/${login}"
        exit 0
    fi

    sleep 1                                  # затримка ускладнює підбір пароля
    echo "Login incorrect"
    left=$(( MAX_TRIES - try ))
    if (( left > 0 )); then
        echo "Залишилось спроб: ${left}"
    fi
done

echo "Забагато невдалих спроб. Доступ тимчасово заблоковано."
exit 1

Як запустити

student@ubuntu — bash
$ chmod +x auth.sh   # дозволити виконання
$ ./auth.sh

Спробуйте прямо тут

Браузерна копія скрипта працює за тією ж логікою. Логін student, пароль linux123.

tty1

05Джерела інформації