До списку уроків
10 клас · Урок 1 з 16

Твій акаунт на спільному сервері

виконано0%
Крок 1

Що сьогодні має стати зрозумілим

Модуль I · IT Skills (Cloud Services & Cyber Security) · 120 хвилин

Сьогодні ти отримуєш власний акаунт на справжньому сервері. Логін і пароль видає вчитель. До кінця уроку ти зайдеш на цю машину зі свого комп’ютера й попрацюєш на ній руками.

П’ять запитань, на які ти зможеш відповісти

  1. Чим сервер відрізняється від ноутбука, який стоїть перед тобою?
  2. Навіщо взагалі потрібні сервери, якщо сторінку можна відкрити локально?
  3. Що робить команда ssh і на якій машині виконуються команди після неї?
  4. Чому в кожного файла на сервері є власник і чому чужий файл не читається?
  5. Чим шлях /home/ivan/notes відрізняється від C:\Users\Ivan\notes?

Що ти зробиш руками

Слова «сервер», «SSH», «термінал», «uid» поки нічого не означають. Розберемо їх по черзі, кожне у своєму кроці.

Головна думка уроку Сервер — це не особлива машина з іншого світу. Це звичайний комп’ютер, на якому одночасно працює багато людей. Саме тому там усе розділене: у кожного свій вхід, своя тека і свої файли.
Крок 2

Два комп’ютери

Один перед тобою, другий за тисячу кілометрів

Перед тобою стоїть ноутбук. У ньому є процесор, оперативна пам’ять, диск і мережева карта. Він уміє запускати програми, зберігати файли й ходити в інтернет.

За тисячу кілометрів у дата-центрі стоїть інша машина. У ній теж є процесор, оперативна пам’ять, диск і мережева карта. Вона теж запускає програми, зберігає файли й ходить в інтернет. Відмінність в іншому: у неї може не бути ні монітора, ні клавіатури, і це нормально.

дві машини поруч
ноутбук перед тобою машина за тисячу кілометрів +-------------------------+ +-------------------------+ | процесор | | процесор | | оперативна пам’ять | | оперативна пам’ять | | диск | | диск | | мережева карта | | мережева карта | | монітор і клавіатура | | монітора немає | | вимикається ввечері | | клавіатури немає | +-------------------------+ | працює цілодобово | +-------------------------+

Монітор і клавіатура потрібні людині, а не комп’ютеру. Якщо машиною керують по мережі, екран на ній нікому не потрібен: усе одно ніхто на нього не дивиться. Такий комп’ютер називають сервером.

Запам’ятай визначення Сервер — це комп’ютер, який обслуговує інші комп’ютери через мережу. Це роль, а не порода заліза. Той самий ноутбук стає сервером, щойно починає відповідати на запити з мережі, і перестає ним бути, щойно припиняє.
Крок 3

Навіщо потрібні сервери

Браузер нічого не вигадує сам — він усе просить

Ти відкриваєш сторінку в браузері. Щоб її показати, браузеру потрібен код HTML, файл зі стилями CSS, файл зі скриптами JS і картинки. Сам він цього не має. Він мусить у когось попросити — і просить у сервера.

запит і відповідь
браузер сервер | | | 1. запит: GET /index.html | |--------------------------------------------->| | | | 2. відповідь: 200 OK + текст сторінки | |<---------------------------------------------| | | | 3. запит: GET /style.css | |--------------------------------------------->| | | | 4. відповідь: 200 OK + текст стилів | |<---------------------------------------------|

Так виглядає кожне відкриття сторінки. Браузер надсилає запит, сервер надсилає відповідь. Одна сторінка — це десятки таких пар, і всі вони проходять за частки секунди.

Сервери потрібні не тільки для сайтів

Спільне в усіх п’яти випадках одне: є багато пристроїв, яким потрібні одні й ті самі дані. Тримати ці дані в одному місці, доступному з мережі, простіше, ніж копіювати їх усім.

Питання

Ти скинув однокласнику посилання на свою сторінку. Він відкрив її на своєму телефоні й бачить ті самі картинки та стилі, що й ти. Звідки вони взялися в його телефоні?

Крок 4

Чому просто не використати мій ноутбук

Питання правильне, і відповідь на нього не про потужність

Технічно ноутбук може віддавати сторінки в мережу. Програми для цього безкоштовні, процесора вистачить. Проблеми починаються далі.

  1. Ти вимкнув ноутбук. Сайт зник для всіх одночасно. Кожен, хто відкриє посилання ввечері, побачить помилку.
  2. Зник домашній інтернет. Провайдер щось ремонтує, роутер перезавантажився — сайт знову недоступний, і ти про це навіть не знаєш.
  3. Змінилася IP-адреса. Домашнє підключення отримує адресу тимчасово. Вона міняється сама, і посилання, яке ти дав учора, сьогодні веде в нікуди.
  4. Ноутбук потрібен тобі самому. Ти хочеш закрити кришку, взяти його в школу, поставити оновлення. Машина, яка комусь служить, не може одночасно бути твоєю особистою.

Звідси й беруться вимоги до сервера. Він працює цілодобово, стоїть у дата-центрі з резервним живленням і надійним каналом, має постійну адресу і керується через мережу, а не з-за столу.

Питання

Однокласник каже: «Навіщо нам сервер? Мій ноутбук потужніший за нього». Що відповісти?

Крок 5

Персональний комп’ютер і сервер

Шість відмінностей, і жодна з них не про швидкість

ОзнакаПерсональний комп’ютерСервер
Час роботивмикається, коли треба, і вимикається ввечеріпрацює цілодобово, вимкнення планують заздалегідь
Монітор і клавіатурає, без них працювати неможливонайчастіше немає взагалі
Адреса в мережітимчасова, змінюється самапостійна публічна адреса
Хто на ньому працюєодна людина, зрідка кількадесятки людей і програм одночасно
Як ним керуютьмишею й вікнами, сидячи перед нимкомандами через мережу, з іншого міста
Кого зачіпає збійтільки тебеусіх, хто цією машиною користується

Подивись на таблицю ще раз. Жоден рядок не каже «сервер швидший». Усередині сервера може стояти таке саме залізо, як у твоєму ноутбуці, а іноді й слабше.

Різниця не в залізі Персональний комп’ютер і сервер відрізняються тим, як машина використовується. Одна служить одній людині, яка сидить перед нею. Друга служить багатьом людям і програмам, які звертаються до неї з мережі.
Крок 6

А де тут Windows і Linux

Дві операційні системи, які вміють те саме

Операційна система — це програма, яка керує комп’ютером: вирішує, яка програма зараз працює, скільки їй дати пам’яті, куди на диск покласти файл і як відправити дані в мережу. Windows і Linux — дві такі системи.

Обидві вміють однакове:

Поширена помилка Часто кажуть: «Windows для одного користувача, а Linux для багатьох». Це неправда. Windows теж багатокористувацька система: у ній є окремі облікові записи, у кожного свої документи й свій пароль, а до Windows-сервера можна підключитися віддалено з іншої машини. Різниця не в тому, що система вміє, а в тому, як її прийнято використовувати.

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

Крок 7

Windows і Linux очима користувача

Найпомітніша відмінність — те, як записують шлях до файла

Той самий файл hello.txt у теці «Документи» користувача Івана записується так:

СистемаШлях до файла
WindowsC:\Users\Ivan\Documents\hello.txt
Linux/home/ivan/Documents/hello.txt

Відмінностей тут три. По-перше, у Windows шлях починається з літери диска: C:, D:, E:. У Linux літер дисків немає взагалі. Усе дерево росте з одного кореня, який позначають однією скісною рискою /. Другий диск, флешка чи мережевий диск теж з’являються десь усередині цього дерева, а не поруч із ним.

По-друге, роздільник у Windows — зворотна скісна риска \, а в Linux — пряма /. По-третє, тека з файлами користувачів називається Users у Windows і home у Linux.

Домашня тека і знак ~

Тека, у якій живуть твої файли, називається домашньою. У Linux вона лежить усередині /home і має назву твого логіна. Для неї є коротке позначення — символ ~, який називають «тильда». Він завжди означає «моя домашня тека».

КороткоПовністю
~/home/ivan
~/notes/home/ivan/notes
~/www/index.html/home/ivan/www/index.html

У кожного користувача ~ означає свою теку. Коли ти пишеш ~/notes, система підставляє твій логін, а коли те саме пише однокласник — його логін.

Питання

Ти й однокласник виконали на сервері однакову команду ls ~/notes і побачили різні файли. Чому одна й та сама команда показала різне?

Крок 8

Регістр літер має значення

Найчастіша помилка тих, хто прийшов із Windows

У Linux великі й малі літери в іменах файлів — різні символи. Три імені нижче належать трьом різним файлам, які спокійно лежать в одній теці:

три різні файли
$ ls PHOTO.png Photo.png photo.png

У Windows так не буває: там Photo.png і photo.png — одне й те саме ім’я, і другий файл із таким іменем створити не вийде.

Чим це закінчується на практиці

Ти зробив сторінку на своєму комп’ютері. У коді написано:

рядок у index.html
<img src="Logo.png">

Файл у тебе називається logo.png, з малої літери. На Windows сторінка відкривається ідеально: система не бачить різниці між іменами. Ти заливаєш усе на сервер — і картинка зникає. Браузер попросив Logo.png, сервер такого файла не знайшов і відповів 404.

Правило на весь рік У теці www усі імена файлів пишемо малими латинськими літерами, без пробілів і без кирилиці. Замість пробілу ставимо дефіс. Тоді розбіжність між твоєю машиною і сервером просто не виникає.
Питання

На ноутбуці сайт виглядає правильно. Після заливання на сервер сторінка відкривається, але без стилів і без картинок. У консолі браузера видно 404 на Style.css і Logo.PNG. Що сталося?

Крок 9

SSH

Secure Shell — захищена оболонка

У сервера немає ні монітора, ні клавіатури. Щоб ним керувати, потрібен спосіб набирати команди на своєму комп’ютері, а виконувати їх на чужому. Такий спосіб називають SSH, від англійського Secure Shell.

SSH відкриває командний рядок віддаленої машини у вікні на твоєму комп’ютері. Слово «secure» означає, що все, що йде каналом, шифрується: ані команди, ані пароль по дорозі прочитати не вийде.

як це влаштовано
твій комп’ютер (Windows) сервер (Linux) +------------------------+ +------------------------+ | термінал | SSH | програма sshd | | ти набираєш команду |=========>| приймає команду | | | інтернет | | | бачиш відповідь |<=========| виконує і відповідає | +------------------------+ +------------------------+ клавіатура тут обчислення тут
Ключова думка Клавіатура лишається перед тобою. Літери ти набираєш на своєму комп’ютері й відповідь читаєш на своєму екрані. А самі команди виконує сервер, і файли, про які в них ідеться, лежать на сервері.
Крок 10

Локальний комп’ютер і сервер

Одне вікно, а машини за ним дві

Поки з’єднання не встановлене, термінал працює з твоїм комп’ютером. У PowerShell команда dir показує твої власні теки. Знак $ на початку рядка — це запрошення до введення: набирати його не треба, набирають те, що після нього.

до підключення: твоя машина
$ dir Каталог: C:\Users\Ivan Desktop Documents Downloads Music Pictures

Тепер ти виконуєш ssh і потрапляєш на сервер. Те саме вікно, та сама клавіатура — але команда ls показує вже вміст іншої машини:

після підключення: сервер
$ ls data notes upload www

Тек Desktop і Downloads тут немає, бо це не твій комп’ютер. Це твоя тека на сервері, і в ній лежить рівно те, що ти туди поклав.

Запам’ятай Клавіатура твоя. Екран твій. Термінал твій. А команди виконує сервер, і файли лежать на сервері.
Питання

Ти підключився по SSH, виконав ls і не побачив теки Downloads, хоча на ноутбуці вона точно є. Що сталося?

Крок 11

Підключаємося до нашого сервера

Адреса, логін, одна команда

Наш сервер має адресу 91.219.61.4. Логін виглядає як прізвище.і.клас, наприклад koval.d.10b. Свій логін і стартовий пароль ти отримуєш від учителя.

Відкрий Windows Terminal або PowerShell. Обидві програми вже є в Windows, установлювати нічого не треба. Набери команду, підставивши свій логін:

підключення
$ ssh koval.d.10b@91.219.61.4

Перший вхід: питання про відбиток хоста

Коли ти підключаєшся до сервера вперше, програма показує довгий рядок, який називають відбитком хоста, і питає, чи ти впевнений:

перший вхід
The authenticity of host '91.219.61.4' can't be established. ED25519 key fingerprint is SHA256:9pQK2v1sM0eT7cRfZ8xHbLdA3nWqYuJ5oVkG6iBtX4s. Are you sure you want to continue connecting (yes/no)? yes

Цей рядок — підпис саме нашої машини. Учитель показує його на дошці. Звір символи з тим, що бачиш у себе, і лише тоді відповідай yes. Так ти переконуєшся, що підключився до нашого сервера, а не до чужої машини, яка видає себе за нього. Питання ставиться один раз: далі програма звіряє відбиток сама.

Пароль під час набору не видно Ти вводиш пароль, а на екрані нічого не з’являється: ані символів, ані зірочок, ані руху курсора. Це не зависання і не поломка. Так зроблено навмисно, щоб той, хто стоїть поруч, не порахував навіть довжину пароля. Друкуй наосліп і тисни Enter.
Крок 12

Ми всередині сервера

Перший рядок, який ти побачиш, і перша команда, яку виконаєш

Після правильного пароля з’являється запрошення до введення команд. Виглядає воно так:

запрошення сервера
koval.d.10b@studyua:~$

Читається воно зліва направо: koval.d.10b — логін, від імені якого ти працюєш; studyua — ім’я машини; ~ — тека, у якій ти зараз перебуваєш; $ — те саме запрошення до введення, що й на твоїй машині. Далі на цій сторінці ми пишемо тільки $, щоб рядки прикладів були коротшими.

Перша команда, яку варто виконати на будь-якій незнайомій машині:

хто я тут
$ whoami koval.d.10b

whoami перекладається як «хто я». Питання тут не про людину: система не знає ні твого прізвища, ні класу. Вона відповідає, від імені якого користувача системи виконуються твої команди. Це і є твій логін.

Крок 13

Навіщо серверу знати, хто ти

Тому що на цій машині працюєш не тільки ти

На 91.219.61.4 заведено акаунти трьох груп: 10A, 10B і 10C. Разом 63 учні та вчитель. У кожного своя тека всередині /home, і називається вона так само, як логін.

що лежить у /home
/home | +-- bondar.a.10a домашня тека Андрія +-- hrytsenko.m.10a домашня тека Марії +-- koval.d.10b твоя домашня тека +-- petrenko.o.10b домашня тека Олени +-- kravets.i.10c домашня тека Івана +-- ... ще 59 таких тек

Тепер порахуй, що ці 64 людини ділять між собою. Процесор один. Оперативна пам’ять одна. Диск один. Мережа одна. Операційна система одна.

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

Питання

Ти і сусід за партою одночасно набрали ls у своїх вікнах, і кожен побачив власні файли, а не чужі. Як машина їх розрізнила?

Крок 14

Багато людей — один комп’ютер

Одне порівняння, яке пояснює всю решту уроку

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

Домашня тека — це квартира. У своїй квартирі ти робиш що хочеш: переставляєш меблі, запрошуєш гостей, лишаєш речі на видноті. У чужу квартиру без дозволу господаря не заходиш, хоч і живеш із ним в одному будинку.

Те, що будинок спільний, не дає права заходити в усі квартири. Те, що сервер спільний, не дає права читати чужі файли. Двері квартир зачинені не тому, що сусіди погані, а тому, що інакше будинок не працює як житло.

Далі на цьому уроці ми подивимося, як саме система тримає ці двері зачиненими.

Крок 15

Файли мають власників

Створи файл — і побачиш у списку своє ім’я

Команда touch створює порожній файл. Створи його у себе:

створити порожній файл
$ touch hello.txt

Тепер подивись на нього докладно. Літера l у команді ls -l означає «довгий список»: замість самих імен виводиться повний рядок про кожен файл.

довгий список
$ ls -l -rw-r--r-- 1 koval.d.10b 10b 0 Sep 8 10:22 hello.txt

У цьому рядку багато всього, і сьогодні нас цікавить одне: третє поле, koval.d.10b. Це ім’я власника файла. Ти створив файл — отже, власник ти.

Решту символів поки не розбираємо Значки -rw-r--r-- на початку рядка теж мають зміст, і ми розберемо їх на наступному уроці. Сьогодні достатньо знаходити в рядку ім’я власника й розуміти, що воно там не випадкове.

Про кожен файл система зберігає кілька фактів одразу: хто власник, до якої групи файл належить, кому дозволено його читати, кому — змінювати, кому — запускати. Ці факти зберігаються не в самому файлі, а поруч із ним, і система звіряється з ними щоразу, коли хтось до файла звертається.

Крок 16

Чому я не можу прочитати чужий файл

Спробуй — і побачиш відповідь системи

Команда cat показує вміст файла на екрані. Спробуй показати чужий файл:

спроба відкрити чуже
$ cat /home/petrenko.o.10b/passwords.txt cat: /home/petrenko.o.10b/passwords.txt: Permission denied

Permission denied перекладається як «доступ заборонено». Ось що сталося всередині машини. Система прийняла команду, подивилася, від імені якого користувача вона прийшла, знайшла власника файла, порівняла одне з одним і відмовила.

Це не помилка Permission denied не означає, що щось зламалося, що файл пошкоджений або що сервер підвис. Це нормальна робота системи: вона зробила саме те, для чого призначена. Такий самий напис отримає будь-хто, хто спробує прочитати твої файли.
Питання

Ти виконав cat на файл однокласника й отримав Permission denied. Що це означає?

Крок 17

Для чого потрібні такі обмеження

Уяви той самий сервер, але без них

Прибери розділення користувачів — і на нашій машині стане можливим ось таке:

У школі це неприємно. У реальному світі на сервері живуть не тільки сайти учнів. Там лежить база даних із чужими персональними даними, там зберігаються бекапи, там працює система моніторингу, яка стежить за станом машини.

Кожній із цих частин потрібен свій рівень доступу. Програмі, яка малює сторінки, треба читати теку сайту — і більше нічого. Системі бекапів треба читати все, але нічого не змінювати. Розробнику треба міняти код, але не чіпати чужі дані. Розділення користувачів — це саме той механізм, яким усе це задається.

Головний принцип Можливість підключитися до машини не дорівнює можливості робити на ній усе. Ти зайшов на сервер — це означає лише, що система впізнала тебе. Що саме тобі дозволено, вона вирішує окремо на кожній команді.
Крок 18

Хто ти для системи

Людині зручне ім’я, системі — число

Команда whoami показує ім’я:

ім’я
$ whoami koval.d.10b

Команда id показує те саме, але з числами:

числові ідентифікатори
$ id uid=1042(koval.d.10b) gid=1002(10b) groups=1002(10b),1100(students)

UID — це User ID, числовий ідентифікатор користувача. У тебе він 1042. GID — це Group ID, числовий ідентифікатор групи. У тебе він 1002, і група називається 10b. Група — це просто список користувачів, яким щось дозволяють разом. Ти належиш до двох груп одразу: 10b — твій клас, students — усі учні модуля.

Ім’я koval.d.10b існує для людей: цифри незручно запам’ятовувати й читати. Сама система працює з числами. Коли вона перевіряє, чи можна тобі відкрити файл, вона порівнює числа, а не рядки з іменами.

Тому імена в системі унікальні й тому UID видається один раз. Два різні логіни з однаковим UID були б для системи однією людиною, хоч на екрані й виглядали б по-різному.

Далі буде На початку рядка ls -l стоять значки rwx, а міняє їх команда chmod. Що означає кожен значок, як читати такі рядки цілком і як самому виставляти доступ — розберемо на наступному уроці.
Питання

Учитель видалив старий акаунт, а новому користувачеві з іншим логіном випадково видав той самий uid=1042. Що буде зі старими файлами, які лишилися на диску?

Крок 19

Права — це механізм, а не заборона

Три дії, три категорії, десять символів у кожному рядку ls -l

Права видно прямо в списку файлів. Сьогодні вчишся їх читати: chmod буде на уроці 2.

що всередині твоєї теки
$ ls -l ~ total 16 drwx------ 2 koval.d.10b koval.d.10b 4096 Sep 2 10:20 data drwx------ 2 koval.d.10b koval.d.10b 4096 Sep 2 10:20 notes drwx------ 2 koval.d.10b koval.d.10b 4096 Sep 2 10:21 upload drwxr-xr-x 2 koval.d.10b koval.d.10b 4096 Sep 2 10:22 www

Три теки закриті, четверта відкрита на читання всім. Подивимося, що лежить у відкритій.

що всередині www
$ ls -l ~/www total 4 -rw-r--r-- 1 koval.d.10b koval.d.10b 412 Sep 2 10:22 index.html
  1. Набери ls -l ~ — команда показує права й власника. Маєш побачити чотири рядки. Порожньо — теки ще не створені, зроби крок 8.
  2. Порівняй останню трійку символів у www і data: r-x проти ---. Саме вона вирішує, чи побачить сторінку світ.
  3. Набери ls -l ~/www: у index.html права -rw-r--r--, а перший символ - означає файл.
d r w x r - x r - x тип d — тека - — звичайний файл l — символьне посилання власник koval.d.10b · uid 1042 одна людина — ти 7 4 + 2 + 1 група 10b · gid 1002 21 однокласник 5 4 + 0 + 1 інші усі, хто не в 10B: 42 акаунти і вебсервер www-data (uid 33) 5 4 + 0 + 1 drwxr-xr-x = 755 r = 4 читати · для теки: ls w = 2 змінювати · створювати x = 1 запускати · зайти в теку

Цифри складаються: rwx = 4+2+1 = 7, r-x = 5, rw- = 6. Звідси 755 і 644.

Одна й та сама буква означає різне

БітДля файлуДля теки
rпрочитати вміст (cat, nano)побачити список імен (ls)
wзмінити або стерти вмістстворювати й видаляти файли всередині
xзапустити як програмузайти всередину (cd) і відкрити файл за іменем
Найчастіша плутанина Видалити файл дозволяє w не на файлі, а на теці, де він лежить.

Пісочниця прав

  1. Поклацай прапорці r, w, x у пісочниці нижче: внизу міняються вісімкове число і рядок ls -l.
  2. Постав файлу 644, а теці 755 — підказка внизу має позеленіти.
файл × хто звертається

Хто звертаєтьсяrwx
644 -rw-r--r--

    Крок 20

    Де я знаходжуся

    Дві команди й два ключі, з яких починається будь-яка робота в терміналі

    У терміналі немає вікна з деревом тек, тому першою справою з’ясовують, де ти зараз. Це робить pwd — скорочення від print working directory, «покажи робочу теку»:

    де я зараз
    $ pwd /home/koval.d.10b

    Це і є твоя домашня тека, та сама, яку коротко пишуть як ~. Тепер подивись, що в ній лежить. Команда ls виводить самі імена:

    імена файлів і тек
    $ ls hello.txt

    З ключем -l кожен запис виводиться окремим рядком і з подробицями:

    довгий список
    $ ls -l -rw-r--r-- 1 koval.d.10b 10b 0 Sep 8 10:22 hello.txt

    Ключ -a додає приховані файли — у Linux прихованими вважаються всі імена, що починаються з крапки. Ключі можна писати разом:

    усе, включно з прихованим
    $ ls -la drwx--x--x 5 koval.d.10b 10b 4096 Sep 8 10:22 . drwxr-xr-x 66 root root 4096 Sep 1 09:12 .. -rw-r--r-- 1 koval.d.10b 10b 220 Sep 1 09:12 .bash_logout -rw-r--r-- 1 koval.d.10b 10b 3771 Sep 1 09:12 .bashrc -rw-r--r-- 1 koval.d.10b 10b 0 Sep 8 10:22 hello.txt

    Два перші рядки є завжди: одна крапка — це тека, у якій ти стоїш, дві крапки — тека на рівень вище. Решта прихованих файлів тут — налаштування твоєї оболонки. Їх не чіпаємо.

    Крок 21

    Створюємо свою структуру

    Чотири теки, з якими ми працюватимемо весь рік

    Команда mkdir створює теку. Ключ -p дозволяє перелічити кілька тек одразу й не лається, якщо якась із них уже існує:

    створити чотири теки
    $ mkdir -p ~/www ~/upload ~/data ~/notes

    Перевір результат. Знак ~ у кінці команди означає «покажи мою домашню теку», навіть якщо зараз ти стоїш деінде:

    перевірка
    $ ls -l ~ drwx------ 2 koval.d.10b 10b 4096 Sep 8 10:31 data drwx------ 2 koval.d.10b 10b 4096 Sep 8 10:31 notes drwx------ 2 koval.d.10b 10b 4096 Sep 8 10:31 upload drwxr-xr-x 2 koval.d.10b 10b 4096 Sep 8 10:31 www

    Літера d на початку рядка означає directory, тобто теку. У колонці власника скрізь стоїть твій логін: ці теки створив ти.

    що вийшло
    /home/koval.d.10b це і є ~ | +-- www/ сторінки сайту: index.html і все, що з ним +-- upload/ приймальня: сюди SFTP кладе файли з ноутбука +-- data/ дані, які не показують стороннім +-- notes/ твої нотатки й конспекти
    ТекаДля чого вона
    wwwусе, що має бачити інтернет: сторінки, стилі, скрипти, картинки сайту
    uploadмісце, куди файли приїжджають із твого комп’ютера; звідси ти розкладаєш їх далі
    dataтаблиці, вивантаження, робочі дані — те, що потрібне тобі, але не стороннім
    notesтвої нотатки, конспекти й відповіді на завдання

    Порядок саме такий на весь модуль. Автоперевірка шукатиме ці чотири імені, тому пиши їх точно так, малими літерами.

    Питання

    Ти створив теки командою mkdir -p ~/WWW ~/Upload ~/data ~/notes. У ls усі чотири видно, але автоперевірка каже, що тек www і upload немає. Що не так?

    Крок 22

    Приватний файл і публічний сайт — не одне й те саме

    Обидва файли на сервері, а видно з інтернету лише один

    Уяви два файли. Перший — ~/notes/password.txt, твій особистий запис. Другий — ~/www/index.html, головна сторінка твого сайту. Обидва лежать на тому самому сервері, в тій самій домашній теці, на тому самому диску.

    Але побачити з інтернету можна тільки другий. Причина проста: програма, яка віддає сторінки в мережу, дивиться лише в теку www. Решту тек їй просто не показали. Вона не знає, що вони існують.

    ФайлХто його бачить
    ~/www/index.htmlбудь-хто в інтернеті, кому ти даси адресу
    ~/notes/password.txtтільки ти, коли зайдеш по SSH
    ~/data/table.csvтільки ти, коли зайдеш по SSH
    ~/upload/photo.jpgтільки ти, коли зайдеш по SSH

    Твоя сторінка після заливання буде доступна за адресою https://studyua.91.219.61.4.nip.io/s/koval.d.10b/, де замість koval.d.10b стоятиме твій логін.

    Що це означає на практиці Усе, що ти покладеш у www, стає публічним тієї ж секунди. Ніяких «ще не готове» для інтернету не існує. Чернетки, особисті записи, чужі фото, скріншоти з іменами — у www їм не місце.
    Крок 23

    SSH і вебсайт — різні двері одного сервера

    Адреса одна, входів два, і призначення в них різне

    У сервера одна адреса — 91.219.61.4. Але програм, які на ньому чекають на запити, кілька. Щоб вони не заважали одна одній, кожна слухає свій порт — номер входу за спільною адресою.

    два входи
    твій комп’ютер | +---------------+---------------+ | | порт 22 (SSH) порт 443 (HTTPS) | | v v +-------------------+ +-------------------+ | термінал сервера | | вебсервер | | ти керуєш машиною | | віддає ~/www | | бачиш усю теку | | більше нічого | +-------------------+ +-------------------+ | | +---------------+---------------+ | одна машина 91.219.61.4

    Порт 22 — це SSH, двері для керування. Через них заходиш тільки ти, за логіном і паролем, і бачиш усю свою теку цілком. Порт 443 — це HTTPS, двері для відвідувачів сайту. Через них заходить будь-хто без пароля, але отримує лише вміст теки www.

    Номери портів не випадкові: їх веде міжнародний реєстр, тому будь-яка програма у світі знає, що SSH — це 22, а HTTPS — це 443. Саме тому в команді ssh номер порту не пишуть: він і так відомий.

    Питання

    Твій сайт відкривається в браузері без жодного пароля. Означає це, що й у термінал сервера може зайти будь-хто?

    Крок 24

    Як передавати файли

    Той самий SSH, тільки замість команд — файли

    Сторінки ти пишеш у себе на комп’ютері, у звичайному редакторі. Потім їх треба перенести на сервер. Для цього є SFTP — спосіб возити файли, який працює всередині того самого з’єднання SSH.

    Це зручно з двох причин. Логін і пароль ті самі, що для термінала, нічого окремо заводити не треба. Трафік шифрується так само, як у SSH: файли й пароль по дорозі не прочитають.

    Програму бери будь-яку з двох: WinSCP або FileZilla. Обидві безкоштовні й показують два вікна поруч: ліворуч твій комп’ютер, праворуч сервер. Файли перетягуються мишею.

    Поле в програміЩо вписати
    ПротоколSFTP
    Хост91.219.61.4
    Порт22
    Ім’я користувачатвій логін, наприклад koval.d.10b
    Парольтой самий, що для SSH
    Віддалена тека/home/<твій логін>/upload

    Пароль у програмі не зберігай, якщо працюєш на шкільній машині: за нею сідає наступний клас. Коли клієнт пропонує запам’ятати пароль — відмовляйся.

    Що їде на сервер, а що лишається в тебе Важку роботу — обробку зображень, монтаж відео й аудіо, генерацію — роби на своєму комп’ютері. На сервер вези готовий легкий результат: .html .css .js .json .csv .md .txt .svg і невеликі зображення. Так сервер лишається швидким для всіх 63 учнів одразу.
    Питання

    Ти налаштував WinSCP на шкільному комп’ютері, і програма пропонує запам’ятати пароль, щоб не вводити його щоразу. Що обрати?

    Крок 25

    Практика

    Виконуй по черзі. Галочки зберігаються — сторінку можна закрити.

    Якщо щось не виходить Перевір три речі в такому порядку: чи правильно набраний логін, чи справді ти на сервері (виконай whoami), чи точно збігається ім’я теки з тим, що написано в завданні. Якщо це не допомогло — клич учителя, а не набирай команду вдесяте.
    Крок 26

    Перевір себе

    Шість питань. Обери один варіант — і побачиш правильну відповідь.

    Питання

    1. Що таке сервер?

    Питання

    2. Що робить команда ssh?

    Питання

    3. Скільки різних файлів у теці Linux, де лежать photo.png, Photo.png і PHOTO.png?

    Питання

    4. Що показує команда whoami на сервері?

    Питання

    5. Ти виконав cat на чужий файл і отримав Permission denied. Що це означає?

    Питання

    6. Яка з чотирьох тек віддається в інтернет?

    Крок 27

    Поясни своїми словами

    Варіантів тут немає. Відповідай реченнями, а не одним словом.

    1. Чим сервер відрізняється від твого ноутбука? Назви дві відмінності й поясни, чому вони важливі.
    2. Ти набираєш команду в терміналі після ssh. На якій машині вона виконується і де лежать файли, про які в ній ідеться?
    3. Навіщо системі знати, від імені якого користувача прийшла команда? Що станеться, якщо вона перестане це перевіряти?
    4. Поясни, чому Permission denied — це не поломка.
    5. Ти поклав особистий файл у теку www. Чому це помилка і як її виправити?
    Куди писати відповіді Створи в себе на комп’ютері файл answers.txt, напиши в ньому п’ять абзаців і залий по SFTP у теку notes. Автоперевірка дивиться саме на ~/notes/answers.txt.
    Крок 28

    Що запам’ятати

    Вісім речень, з яких складається весь урок

    1. Сервер — це комп’ютер, який обслуговує інші комп’ютери через мережу. Це роль, а не потужність заліза.
    2. Сервер працює цілодобово й має постійну адресу. Саме тому домашній ноутбук його не замінює.
    3. Windows і Linux уміють одне й те саме, обидві багатокористувацькі. На серверах частіше стоїть Linux, і керують ним у терміналі.
    4. У Linux немає літер дисків: усе дерево росте з кореня /, а ~ означає твою домашню теку.
    5. Регістр літер в іменах файлів має значення: Logo.png і logo.png — різні файли.
    6. SSH відкриває командний рядок віддаленої машини. Клавіатура твоя, а команди виконує сервер.
    7. У кожного файла є власник. Чужий файл не читається, і це нормальна робота системи, а не помилка.
    8. Можливість підключитися до сервера не дорівнює можливості робити на ньому все.
    Крок 29

    Головна схема

    Весь урок на одному малюнку

    твій комп’ютер, інтернет і сервер
    ТВІЙ КОМП’ЮТЕР СЕРВЕР 91.219.61.4 +---------------------+ +--------------------------+ | браузер | --- HTTPS 443 ->| вебсервер | | термінал | --- SSH 22 ---->| sshd, твоя оболонка | +---------------------+ +--------------------------+ | /home | | koval.d.10b | | www/ публічно | | upload/ приватно | | data/ приватно | | notes/ приватно | | petrenko.o.10b | | ... ще 62 акаунти | +--------------------------+

    Ліворуч твій комп’ютер із двома програмами: браузером і терміналом. Праворуч сервер із двома програмами, які на них відповідають. Посередині інтернет і два номери портів.

    Унизу праворуч — /home з домашніми теками всіх 63 учнів і вчителя. Твоя тека там одна з багатьох, і в ній публічна лише www: саме її і тільки її вебсервер віддає в інтернет.

    Крок 30

    Автоперевірка

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

    Демонстраційний режим: результат згенеровано для показу. На сервері ця кнопка викликає POST /api/check, який запускає /opt/lessons/1/check.sh від імені учня.

    Про обов’язковий критерій Поки немає успішного входу по SSH, решта пунктів не має сенсу: перевіряти просто нема де. Тому цей пункт блокуючий — доки він червоний, роботу не приймуть.

    Що вчитель дивиться на екрані

    Крок 31

    Шкала виконання

    Це те, що бачить учитель, коли виставляє оцінку.

    СкладникВагаРезультат
    Виконано
    0%
    Рекомендований бал за 12-бальною

    Домашнє завдання

    1. Напиши відповіді на п’ять питань із розділу «Поясни своїми словами» у файл answers.txt і залий його по SFTP у теку notes.
    2. Додай туди ж короткий абзац: що саме зміниться в роботі класу, якщо сервер перестане розділяти користувачів.
    3. Перевір, що жоден файл із твого комп’ютера, який ти не хочеш показувати стороннім, не потрапив у теку www.
    Анонс уроку 2 Наступного разу розберемо початок рядка ls -l — значки rwx. Побачимо, як система записує окремо доступ для власника, для групи й для всіх інших, і навчимося міняти цей доступ командою chmod.
    Джерела

    Звідки взяті факти

    Усе, що можна перевірити, — з відкритих стандартів і документації. Перевіряти дозволено й корисно.

    Приклади виводу команд на цій сторінці складені як типові для навчального сервера: логіни, числа й дати на твоєму акаунті будуть свої. Саме тому команди варто виконати, а не переписати з екрана.