01Коротко про GNU/Linux
Історія системи складається з двох частин. У 1983 році Річард Столлман заснував проєкт GNU, мета якого — створити повністю вільну операційну систему. До початку 1990-х було готово майже все: компілятор, оболонка, утиліти, — бракувало лише ядра. У 1991 році фінський студент Лінус Торвальдс опублікував власне ядро Linux, і разом ці частини утворили повноцінну ОС — тому її правильна назва GNU/Linux.
Linux поширюється під ліцензією GNU GPL: будь-хто може використовувати, вивчати, змінювати й поширювати код. Саме тому існують сотні дистрибутивів — готових збірок, які поєднують ядро, системні утиліти, менеджер пакетів і графічне середовище.
Ядро (kernel)
Керує процесором, пам'яттю, пристроями та процесами. Посередник між «залізом» і програмами.
Оболонка (shell)
Командний інтерпретатор, найчастіше Bash. Приймає команди користувача та запускає програми.
Файлова система
Єдине дерево каталогів від кореня /. Диски, флешки й навіть пристрої підключаються як частини цього дерева.
Багатокористувацькість
Кожен користувач має власний каталог і права доступу; адміністратор — користувач root.
02Популярні дистрибутиви
Дистрибутив — це ядро Linux плюс набір програм, менеджер пакетів і налаштування, зібрані в готову до встановлення систему.
Ubuntu
aptНайпопулярніший дистрибутив для початківців і серверів. Виходить кожні пів року, LTS-версії підтримуються 5 років.
родина Debian · CanonicalDebian
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
Десять базових команд для навігації та роботи з файлами в терміналі.
# створюємо проєкт, копіюємо й перейменовуємо файли $ 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
pwdPrint Working Directory — показує повний шлях до поточного каталогу.echo "текст"Виводить текст або значення змінної, напр. echo $HOME. З > записує текст у файл.ls -laПоказує вміст каталогу. -l — детальний список, -a — разом із прихованими файлами.cd [каталог]Переходить до іншого каталогу. cd .. — на рівень вище, cd ~ — у домашній.touch [файл]Створює порожній файл або оновлює час зміни існуючого.mkdir -p [шлях]Створює каталог. З -p — одразу всю вкладену структуру.cp [звідки] [куди]Копіює файли. Для каталогів потрібен ключ -r (рекурсивно).mv [звідки] [куди]Переміщує файл або каталог; у межах одного каталогу — перейменовує.rm [файл]Видаляє файл без кошика. rm -r — каталог із вмістом. Використовуйте обережно.historyПоказує список раніше введених команд; !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
Як запустити
$ chmod +x auth.sh # дозволити виконання $ ./auth.sh
Спробуйте прямо тут
Браузерна копія скрипта працює за тією ж логікою. Логін student, пароль linux123.
05Джерела інформації
- The Linux Kernel Archiveskernel.org
- Linux and the GNU Systemgnu.org
- GNU Bash Reference Manualgnu.org
- The Linux Command Line — безкоштовна книгаlinuxcommand.org
- Linux man pages onlineman7.org
- Linux Journey — інтерактивний курсlinuxjourney.com
- DistroWatch — огляд дистрибутивівdistrowatch.com