Про підручник

Даний підручник знайомить з основами роботи в операційній системі Linux на основі популярного дистрибутива Ubuntu.

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

  • встановлення і налаштування операційної системи Linux;

  • використання програмного забезпечення в Linux;

  • вивчення і застосування інструментів Linux для вирішення користувацьких, в тому числі, навчальних, завдань.

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

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

Робота із підручником передбачає, що Ви:

  • Володієте навичками роботи в операційній системі, відмінній від Linux, на рівні користувача.


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

1. Вступ

1.1. З історії створення Linux

Річард Столмен
Річард Столмен

У 1983 році програміст, «філософ» руху вільних програм Річард Столмен, заснував проект GNU .

Метою цього проекту було створення повноцінної Unix -подібної операційної системи і наповнення її лише відкритим програмним забезпеченням.

На початок 1990-х проект зібрав майже всі необхідні компоненти такої системи: бібліотеки, компілятори, текстові редактори, командну оболонку Unix, - за винятком основного компонента - ядра операційної системи.

Лінус Торвальдс
Лінус Торвальдс

У 1991 році фінський програміст Лінус Торвальдс створив ядро операційної системи GNU/Linux. Таким чином, з’явилася операційна система з ядром Linux і набором програм і бібліотек, розроблених в рамках проекту GNU.

Процес розробки і удосконалення ядра постійно продовжується, а інші підсистеми (як-от компоненти GNU) також розвиваються.

Пінгвін Tux
Tux

На відміну від більшості інших операційних систем, система GNU/Linux не має єдиної «офіційної» комплектації.

Різні спільноти й компанії комбінують і поширюють програми GNU разом із ядром Linux та додатковим прикладним програмним забезпеченням у вигляді дистрибутивів Linux.

Пінгвін на ім’я Tux є логотипом і талісманом ядра Linux.

1.2. Де використовується Linux?

Linux є одним із найвидатніших прикладів розробки вільного програмного забезпечення. На відміну від власницьких операційних систем (на кшталт Microsoft Windows та MacOS), вихідні коди Linux доступні усім для використання, зміни та розповсюдження абсолютно вільно (в тому числі безкоштовно).

Система Linux, спочатку розроблена для використання окремими ентузіастами на своїх персональних комп’ютерах, пізніше набула неабиякої популярності як серверна операційна система (компанії, що надають послуги веб-хостингу, використовують Linux на своїх веб-серверах).

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

  • смартфони;

  • планшетні ПК;

  • маршрутизатори комп’ютерних мереж (роутери);

  • пристрої автоматики;

  • настільні комп’ютери тощо.

1.3. Дистрибутиви Linux

Типовий дистрибутив Linux складається з:

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

Як правило, дистрибутив складається з пакунків.

Під пакунком розуміється окрема програма або бібліотека.

Зазвичай, пакунок постачається у скомпільованій формі, зрозумілій системі керування пакунками.

Кожен такий пакунок містить окрім, власне, програми (дистрибутива програмного забезпечення) ще й додаткову інформацію (набір певних метаданих, який зберігається в системній базі даних пакунків), як-от:

  • інформацію про версію програми та/або пакунку;

  • ім’я розробника;

  • контрольну суму;

  • інформацію про залежності з іншими пакунками.

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

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

Керівник пакунків завантажує програми із репозиторія та слідкує за залежностями, встановлюючи їх за потреби. Він також може оновити (автоматично або за командою) всю систему, якщо в репозиторії з’являться оновлені версії.

Системи керування пакунками операційних систем на основі Linux використовують різні формати пакунків. Основні типи форматів пакунків такі:

  • бінарні (двійкові) пакунки (тільки виконувані файли);

  • пакунки, що містять вихідні коди програм.

Різноманіття дистрибутивів Linux

Існує величезна кількість різноманітних дистрибутивів Linux від повноцінних стільничних та серверних операційних систем до мінімальних середовищ (що, як правило, використовуються у вбудованих системах чи мають спеціалізоване призначення). Серед них:

  • Ubuntu

  • Debian

  • Linux Mint

  • Zorin OS

  • Manjaro

  • Arch Linux

  • Elementary OS

  • CentOS

  • openSUSE

  • Fedora та інші.

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

Статистику найбільш часто використовуваних дистрибутивів Linux користувачами у світі можна переглянути на сайті linuxcounter.net .

У підручнику подається інформація на основі прикладів роботи в операційній системі Ubuntu .

Усі рекомендації, які зустрічаються у підручнику для середовища операційної системи Ubuntu, можна застосовувати і до інших, основаних на Ubuntu або Debian, дистрибутивах Linux.

1.3.1. Ubuntu

Ubuntu - одна з найпопулярніших систем, яка має найбільше співтовариство досвідчених користувачів та Інтернет-ресурсів, зручна для користувача і проста для початківця.

На базі Ubuntu створені дистрибутиви Xubuntu і Lubuntu, які позиціонуються як дистрибутиви для малопотужних комп’ютерів.

Дистрибутив Ubuntu побудований на основі Debian GNU/Linux - іншого популярного дистрибутива Linux і спонсорується Canonical - компанією для розробки і популяризації проектів вільного програмного забезпечення.

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

  • багатовіконне середовище робочого столу;

  • засоби для перегляду Інтернету;

  • офісні програми з можливістю читати і зберігати файли у форматі Microsoft Office;

  • редактор зображень та інші.

Інше програмне забезпечення у вигляді пакунків можна отримати і встановити із відповідних репозиторіїв.

Для операційних систем, основаних на Debian, і, зокрема, для Ubuntu, використовуються deb-пакунки.
Філософія Ubuntu

Ubuntu logo

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

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

Кожна версія Ubuntu має номер, що складається з року та місяця, в якому відбувся випуск системи. Наприклад, перший випуск Ubuntu 4.10 вийшов у світ у жовтні 2004 року.

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

Наприклад, версія Ubuntu 16.04 LTS, яка вийшла 21 квітня 2016 року, носить ім’я Xenial Xerus (Гостинний Ксерус ). Це довготривалий реліз, про що свідчить напис LTS, тобто оновлення безпеки і програмного забезпечення для цього випуску будуть підтримуватися протягом 5 років (до 21 квітня 2021 року).

Так співпало, що на версії Ubuntu 17.10 закінчився алфавіт і все почалося спочатку. Кодове ім’я для цієї версії звучить Artful Aardvark (Спритний Трубкозуб ). Ця версія є проміжною і вона не є версією з довготривалою підтримкою.

У версіях з довготривалою підтримкою реалізовано багато покращень в плані стабільності і безпеки системи, адже розробниками виправлено і мінімізовано більшість багів і проблем. Проміжні версії, як правило, використовуються для тестування програмного забезпечення та нововведень у операційну систему.
Переглянути історію випусків Ubuntu можна на wiki-сторінці версій (англ.).
Нові версії Ubuntu

Фінальною версією Ubuntu з довготривалою підтримкою (оновлення безпеки та програмного забезпечення до квітня 2023 року) для персональних комп’ютерів є реліз Ubuntu 18.04 LTS з кодовою назвою Bionic Beaver (Біонічний Бобер), яка вийшла 26 квітня 2018 року.

Короткі нотатки про реліз Ubuntu 18.04 LTS:

  • середовище робочого столу GNOME Shell за замовчуванням;

  • графічна система (графічний сервер) X.Org Server за замовчуванням (додатково можна змінити на Wayland);

  • встановлення лише 64-бітної версії операційної системи (але самі 32-бітні програми підтримуються);

  • Python 2 більше не встановлюється за замовчуванням, Python 3 оновлений до версії 3.6;

  • збирання даних про використання системи (можна відключити);

  • можливість мінімального («чистого») встановлення системи (веб-переглядач та основні службові програми);

  • зміна кількості команд для встановлення нових програм (app) із сторонніх репозиторіїв з трьох команд

sudo add-apt-repository ppa:ppa-url
sudo apt update
sudo apt install app

на дві команди (тепер команда додавання PPA add-apt-repository сама запускає apt update, що дозволяє пропустити другий крок)

sudo add-apt-repository ppa:ppa-url
sudo apt install app

Рекомендовані системні вимоги:

  • 2 ГГц двоядерний процесор або кращий;

  • 2 Гб оперативної пам’яті;

  • 25 Гб вільного місця на жорсткому диску;

  • доступ до Інтернету (рекомендується, але не обов’язковий).

Більше деталей про нові версії можна дізнатися на офіційному сайті Ubuntu.

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

Якщо Ваш комп’ютер не задовільняє рекомендованим системним вимогам, то зверніть увагу на похідні дистрибутиви Ubuntu - Xubuntu , Lubuntu .

2. Встановлення Linux Ubuntu

2.1. Необхідні початкові умови

  • Завантажити iso-образ з дистрибутивом Ubuntu з офіційного сайту Ubuntu.

  • Записати завантажений образ однією зі спеціальних програм на USB-диск (флешку) (Додаток А. Створення завантажувальної флешки).

  • Перевірити підключення до мережі Інтернет (під час встановлення можуть бути завантажені додаткові пакунки програм, які не вмістилися на інсталяційний образ).

2.2. Процес встановлення

Далі описується встановлення операційної системи Ubuntu 18.04 LTS на «чистий» жорсткий диск.
Якщо жорсткий диск, на який здійснюється встановлення Ubuntu, містить важливі дані, перед тим, як продовжити, слід виконати резервне копіювання таких даних на інші носії.

2.2.1. Завантаження із інсталяційного образу

Вставити флешку із записаним образом Ubuntu в USB-порт, перезавантажити комп’ютер.

2.2.2. Вибір мови

Після перезавантаження відкриється вікно вітання, у якому потрібно обрати мову

Встановлення Ubuntu
Вікно вітання Ubuntu: обираємо мову

2.2.3. Запуск встановлення

Коли мова обрана, на екрані вітання буде запропоновано два варіанти: Спробувати Ubuntu і Встановити Ubuntu.

Якщо обрати Спробувати Ubuntu, то система буде завантажена в Live-режимі, тобто без встановлення на комп’ютер і можна буде спробувати Ubuntu, а в подальшому перейти до встановлення.

У випадку з вибором Встановити Ubuntu, відбудеться безпосередньо встановлення.

У випадку вибору варіанта Спробувати Ubuntu, відкриється робочий стіл Ubuntu

Встановлення Ubuntu
Робочий стіл Ubuntu: знайомство із операційною системою

Для першого знайомства з Ubuntu можна спробувати запустити деякі вже встановлені у систему програми.

В Ubuntu будь-яку встановлену у систему програму можна знайти і відкрити через кнопку Показати програми Утиліта Показати програми в Ubuntu, що розташована на панелі обраних додатків.

Для швидкого пошуку програми у рядок пошуку можна ввести її назву (або частину її назви) і її ярлик запуску з’явиться у списку.

Утиліта Показати програми в Ubuntu
Утиліта Показати програми в Ubuntu: відкриваємо програму Веб-браузер Firefox

Після знайомства з Ubuntu, можна перейти до безпосереднього встановлення, виконавши подвійний клік на значку Встановити Ubuntu Встановити Ubuntu на робочому столі, перевірити чи правильно обрано мову і натиснути кнопку Продовжити

Встановлення Ubuntu
Встановлення Ubuntu: кнопка Продовжити для переходу до наступного кроку

2.2.4. Розкладка клавіатури

Тут вам запропоновано вибрати мову розкладки клавіатури і натиснути Продовжити

Встановлення Ubuntu
Встановлення Ubuntu: вибір мови розкладки клавіатури

2.2.5. Оновлення та інше програмне забезпечення

На кроці Оновлення та інше програмне забезпечення оберіть спосіб встановлення (звичайний чи мінімальний) і активуйте обидва пункти, вказані нижче:

  • Завантажити оновлення при встановленні Ubuntu.

  • Встановити стороннє програмне забезпечення для графіки, обладнання Wi-Fi та додаткових медіаформатів.

Натисніть кнопку Продовжити, щоб перейти до наступного кроку

Встановлення Ubuntu
Встановлення Ubuntu: способи встановлення і завантаження програмного забезпечення з Інтернету

2.2.6. Тип встановлення

На кроці Тип встановлення потрібно обрати один із варіантів:

  1. Якщо на комп’ютері вже встановлена інша операційна система (або кілька, суть від цього не змінюється), з’явиться перший варіант Встановити Ubuntu поруч з... (даний варіант відсутній на скріншоті нижче, оскільки жорсткий диск, на який відбувається встановлення системи є «чистим»), в якому встановлювач сам знайде місце поруч зі встановленою системою, не заподіявши їй ніякої шкоди.

  2. Другий варіант, який пропонує Стерти диск і встановити Ubuntu. В цьому випадку зітреться все, що є на жорсткому диску і встановиться тільки Ubuntu.

  3. Третій варіант (який і обираємо) - Щось інше, пропонує створити і змінити розділи диска для Ubuntu самостійно (для досвідчених користувачів)

Встановлення Ubuntu
Встановлення Ubuntu: обираємо тип встановлення

Натискаємо кнопку Продовжити, щоб перейти до наступного кроку.

2.2.7. Таблиця розділів

На даному кроці необхідно створити нову таблицю розділів, у випадку встановлення на «чистий» жорсткий диск (він відображається у вікні підключених пристроїв з назвою sda)

Встановлення Ubuntu
Встановлення Ubuntu: підготовка до розбиття диска на розділи
Таблиці розділів: MBR і GPT

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

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

UEFI, як більш сучасний інтерфейс, повністю підтримує всі функції BIOS, але не навпаки. В налаштуваннях UEFI, у які можна зайти відразу після увімкнення комп’ютера за допомогою натискання клавіш F2, Delete та інших, режим підтримки BIOS частіше всього називається Legacy (спадковий).

Отже, при включенні комп’ютера, UEFI (або BIOS) починає ініціалізувати обладнання та знаходить жорсткий диск.

Жорсткі диски у Linux називаються sda, sdb, sdc і т.д. (sda - перший жорсткий диск, sdb - другий і далі по аналогії). Підключені флешки і інші USB-пристрої так само ідентифікуються як жорсткі диски і теж отримують імена вигляду sd*.

Як відомо, цілком жорсткий диск майже ніколи не використовується - диск обов’язково розбивається на розділи (для операційної системи, для файлів користувача тощо).

Розділи у Linux на жорстких дисках називаються так: sda1, sda2, sda3 і т.д. Тобто назва розділу складається з назви диска і номера розділу.

Розбити диск на розділи можна двома стандартними способами: за допомогою MBR або GPT.

MBR

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

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

Пов’язані вони так:

  • безпосередньо жорсткий диск ділиться на основні розділи;

  • один з основних розділів може бути призначений розширеним (extended) і розділений на логічні (logical);

  • при цьому основних розділів може бути максимум чотири (з урахуванням розширеного);

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

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

GPT

Сучасний стандарт управління розділами на жорсткому диску. Ось кілька переваг GPT:

  1. MBR підтримує диски до 2 ТБ, GPT - до 9 ЗБ.

  2. GPT підтримує більше чотирьох розділів (ядро Linux підтримує до 256 розділів).

  3. GPT використовує нову систему адресації LBA, замість застарілої CHS.

  4. Cлужбова інформація GPT дублюється на початку і у кінці диска.

  5. GPT перевіряє контрольні суми, що дозволяє виявити модифікацію таблиці розділів.

  6. GPT підтримує Unicode, а отже кириличні імена.

Отже, у таблиці розділів зберігається інформація про структуру жорсткого диска (кількість розділів, якого вони обсягу, у якій комірці пам’яті починаються і на якій закінчуються тощо). Не дивлячись на те, що таблиці розділів MBR і GPT відрізняються архітектурою, вони виконують одну й ту ж роботу.

Щоб дізнатися, яка таблицю розділів використовуєтсья на вашому диску, виконайте у терміналі команду

sudo fdisk -l

Результат виконання команди може бути таким

Диск /dev/sda: 100,5 GiB, 107904958464 байтів, 210751872 секторів
Одиниці: секторів з 1 * 512 = 512 байтів
Розмір сектора (логічного/фізичного): 512 байтів / 512 байтів
Розмір введення-виведення (мінімальний/оптимальний): 512 байтів / 512 байтів
Тип мітки диска: dos
Ідентифікатор диска: 0x80bc85fe

де значення dos у рядку Тип мітки диска: означає, що у вас використовується MBR (у випадку GPT значення буде gpt).

UEFI використовує GPT там, де BIOS використовує головний завантажувальний запис MBR.

Для створення нової таблиці розділів натисніть по черзі кнопки Нова таблиця розділів…​ і Продовжити

Встановлення Ubuntu
Встановлення Ubuntu: створення нової таблиці розділів на жорсткому диску sda

У результаті цих дій отримаємо обсяг вільного місця на диску у МБайтах

Встановлення Ubuntu
Встановлення Ubuntu: нова таблиця розділів, створена на диску sda

2.2.8. Створення розділів

Створимо на диску розділи для різних задач.

Теорія
Точки монтування у Linux

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

Linux працює за принципом ієрархічного дерева каталогів, де кореневий каталог (позначається /) є основною точкою монтування, в яку, за замовчуванням, входять усі інші.

На відміну від Windows, у Linux всі використовувані розділи дисків, флешки, DVD-диски та інші зовнішні носії монтуються в підкаталоги кореня файлової системи, а не як окремі пристрої (як-от C:, D:, ...).

Наприклад, в підкаталозі /home зберігаються всі ваші персональні файли. Якщо ви хочете розмістити ці дані в окремому від кореня розділі, то створіть новий розділ і встановіть точку монтування на /home. І це можна зробити для будь-якого підкаталогу.

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

Таблиця "Точки монтування"
Каталог Опис

/boot

початковий завантажувач і заголовки ядра

/dev

драйвери і пристрої

/home

файли, призначені для користувача

/opt

додаткове програмне забезпечення

/srv

системні сервіси

/tmp

тимчасові файли

/usr

додатки

/usr/local

дані, доступні всім користувачам

У стандартній розбивці диска для встановлення Linux можуть використовуватись такі розділи:

/

основний (системний) розділ, корінь файлової системи;

/boot

файли завантажувача;

/home

розділ для файлів користувача;

swap

розділ (або файл) підкачки.

SWAP

Історично, swap у Linux розміщувався на окремому розділі із спеціальною файловою системою swap (розділ підкачки) без точки монтування, але в сучасних дистрибутивах продуктивність swap-файла не поступається swap-розділу.

Однак, стандартний встановлювач Ubuntu (до версії 17.04) не вміє створювати swap-файл при встановленні та інформує про це у вигляді попередження, якщо swap-розділ не визначений при розмітці диска. Починаючи з версії 17.04, Ubuntu пропонує за замовчуванням створювати swap у файлі (обсяг файла визначається як 5% від вільного на диску простору, але не більше 2 Гб).

Використання swap-файла має деякі переваги над swap-розділом: ​​він не займає окремий розділ, його легко створити, змінити його розмір або видалити.

Все, що вище перераховано, окрім swap, - це точки монтування у файловій системі. Це означає, що зазначені розділи, будуть підключені до відповідних каталогів у файловій системі.

Рекомендації щодо створення розділів у Linux
/

/ - корінь файлової системи, головний (системний) розділ операційної системи. На ньому розміщуються всі системні файли і до нього будуть підключатися інші розділи. На цей розділ встановлюються усі програми.

З огляду на все це, потрібно виділити достатню кількість дискового простору для цього розділу. Мінімальні вимоги для того, щоб вмістилися усі файли з інсталяційного диска ~ 8 ГБайт. При активному використанні (встановленні великої кількості програм, збільшення кешу програм, і т.д.) або при виникненні збоїв у роботі, що призводить до зростання обсягу каталогів з логами системи (/var/log), може знадобитися близько 20 ГБайт дискового простору. З кожним оновленням розмір системи буде ще збільшуватися на 200-500 МБайт. Виходячи з цього, для кореневого розділу можна із запасом виділити до 50 ГБайт дискового простору.

Файлова система на даному розділі повинна бути стабільною, у іншому випадку, є ризик втратити всю систему при невдалому вимкненні комп’ютера. А тому, для системного розділу, підійде журнальна файлова система, наприклад, ext4.

/boot

На цьому розділі розміщуються файли налаштування і модулі завантажувача, які зчитуються при старті системи. Ці файли займають не так багато простору, близько 100 МБайт, але з часом будуть накопичуватися старі версії ядер, так що краще запастися місцем і виокремити, наприклад, до 512 МБайт.

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

Створювати розділ /boot необов’язково, але його варто робити у разі встановлення кількох дистрибутивів Linux .
/home

Це розділ для ваших файлів (аналог диска d: у Windows). Тут будуть зберігатися ваші завантаження, документи, відео, музика, а також налаштування програм. Для цього розділу необхідно виділити увесь простір, що залишився. Файлова система, так само як і для кореня файлової системи, потрібна стабільна і швидка - ext4.

Якщо використовується розділ /home, то при перевстановленні системи, в тому числі, встановленні нової версії, можна спокійно форматувати системний розділ, дані розділу /home будуть збережені.
Розмітку диска для розділу /home виконуйте в останню чергу.
swap

Розділ swap використовується системою при нестачі оперативної пам’яті і для режиму сну, тому його необхідність визначається двома факторами: обсягом оперативної памяті і наміром використовувати «режим сну».

Режим UEFI і таблиця розділів GPT

Сучасні материнські плати персональних комп’ютерів і ноутбуків випускаються з інтерфейсом UEFI і це зумовлює виконувати розмітку диска при встановленні системи дещо інакше, як у випадку використання BIOS.

Зокрема, коли зв’язок між обладнанням і операційною системою на таких материнських платах здійснюється через увімкнений режим UEFI (а не Legacy BIOS), для розмітки диска необхідно використати таблицю розділів GPT і файли завантажувача операційної системи повинні зберігатися в окремому розділі, який називається ESP (Extensible Firmware Interface System Partition).

Звичайно, можна використовувати режим Legacy BIOS, оскільки більшість материнських плат з UEFI дозволяють відтворювати його. У цьому режимі можна встановити Linux без створення додаткового розділу ESP.
Щоб створити додатковий розділ ESP, при встановленні Ubuntu необхідно обрати варіант Спробувати Ubuntu (завантажити систему в Live-режимі) і підготувати розмітку диска за допомогою утиліти GParted.

Давайте розглянемо як створюється розділ ESP. Для цього відкриємо утиліту GParted із завантажувального Live-образу, виконавши у терміналі команду

gparted

Далі необхідно виконати комнади з меню Device  Create Partition Table…​ для створення нової таблиці розділів

Створення нової таблиці розділів в Ubuntu за допомогою програми GParted
Утиліта GParted в Ubuntu: створення нової таблиці розділів

Далі у списку необхідно обрати тип таблиці розділів GPT

Створення таблиці розділів GPT в Ubuntu за допомогою програми GParted
Утиліта GParted в Ubuntu: створення таблиці розділів GPT

Тепер необхідно створити розділ ESP для UEFI. Для цього натискаємо правою кнопкою миші на нерозмічену область (unallocated) і обираємо команду New

Створення розділу ESP в Ubuntu за допомогою програми GParted
Утиліта GParted в Ubuntu: створення розділу ESP для UEFI

В якості файлової системи для розділу ESP треба обрати FAT32, розмір - 512 мегабайт

Вибір файлової системи для розділу ESP в Ubuntu за допомогою програми GParted
Утиліта GParted в Ubuntu: вибір файлової системи для розділу ESP

і натиснути спочатку кнопки Add, а потім Apply для застосування змін.

Потім через контекстне меню створеного розділу необхідно обрати пункт Manage Flags і відзначити пункти boot і esp

Встановлення flags-позначень esp і boot для розділу ESP в Ubuntu за допомогою програми GParted
Утиліта GParted в Ubuntu: встановлення flags-позначень esp і boot для розділу ESP

Отже, розділ ESP для UEFI успішно створений, можна закрити утиліту GParted і переходити до встановлення Ubuntu. На кроці, коли установник Ubuntu запропонує вибрати спосіб розмітки, оберіть варіант Щось інше і у вікні з’явиться список усіх розділів

Список розділів на диску в Ubuntu у програмі GParted
Утиліта GParted в Ubuntu: список розділів на диску

Для розділу ESP з файловою системою FAT32 за допомогою контекстного меню оберіть із списку Використовувати як: значення системний розділ EFI, а внизу екрана, в рядку Пристрій для встановлення системного завантажувача: виберіть назву розділу ESP.

Детальніше про встановлення Ubuntu в режимі UEFI читайте на сторінці Installing Ubuntu in UEFI mode довідки спільноти користувачів Ubuntu.

Далі можна продовжити встановлення системи як зазвичай: створити розділ для завантажувача (за потреби), створити кореневий розділ, домашній розділ тощо.

Результат розмітки диску з розділом ESP для UEFI в Ubuntu у програмі GParted
Утиліта GParted в Ubuntu: результат розмітки диску з розділом ESP для UEFI
Висновки

Для типової настільної системи немає ніякого сенсу виокремлювати власні розділи для усіх точок монтування.

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

Рекомендується при встановленні розбивати жорсткий диск вручну, створюючи як мінімум 2 розділи (для кореня файлової системи / і для файлів користувача /home), що надалі полегшує процеси відновлення, перевстановлення системи або перехід на інший дистрибутив.
Практика

Для створення розділів вибираємо пункт Вільне місце і натискаємо на плюс (+) при створенні кожного нового розділу

Встановлення Ubuntu
Встановлення Ubuntu: створення розділу завантаження /boot
Встановлення Ubuntu
Встановлення Ubuntu: створення кореневого розділу /
Встановлення Ubuntu
Встановлення Ubuntu: створення домашнього розділу /home

На цьому розмітка диска завершена, натискаємо Встановити зараз

Встановлення Ubuntu
Встановлення Ubuntu: остаточна розмітка диска

і підтверджуємо внесення змін на диск, натискаємо Продовжити, щоб продовжити встановлення

Встановлення Ubuntu
Встановлення Ubuntu: підтвердження змін, внесених на диск

2.2.9. Ваше місцезнаходження?

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

Встановлення Ubuntu
Встановлення Ubuntu: налаштування часу у системі

2.2.10. Користувач

На етапі встановлення Хто ви? необхідно ввести ім’я користувача і пароль для основного користувача, від імені якого буде використовуватись система, а також ввести мережеве ім’я для комп’ютера.

Пароль варто записати, адже його часто треба буде вводити при налаштуванні системи.

Вхід у систему можна зробити автоматичним (якщо комп’ютером буде користуватися один користувач), у іншому випадку (наприклад, користувачів буде два) обираємо пункт Для входу потрібен пароль

Встановлення Ubuntu
Встановлення Ubuntu: ім’я користувача і пароль для входу, назва комп’ютера в мережі

Якщо все заповнено і активовано, натисніть Продовжити.

2.2.11. Завершальний етап встановлення

Тепер залишилося дочекатися поки завершиться встановлення Ubuntu (копіювання файлів на комп’ютер), після чого необхідно буде перезавантажити комп’ютер

Встановлення Ubuntu
Встановлення Ubuntu: перезавантаження комп’ютера для завершення встановлення
На завершальному етапі встановлення в процесі перезавантаження комп’ютера треба витягнути інсталяційний носій (флешку) з образом.

2.2.12. Вхід у систему

Залишилося ввести логін і пароль для авторизації у системі

Встановлення Ubuntu
Встановлення Ubuntu: вхід у систему

3. Організація файлової системи у Linux

3.1. Поняття файла і каталогу

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

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

Для операційної системи Linux файл - окрема область даних на одному з носіїв інформації, у якої є власне ім’я. Більше того, усі пристрої, підключені до комп’ютера (починаючи з клавіатури і закінчуючи будь-якими зовнішніми пристроями, наприклад, принтерами і сканерами) Linux визначає як файли.

Звичайно, файл, який містить звичайні дані, сильно відрізняється від файла, призначеного для звернення до пристрою, тому у Linux визначені кілька різних типів файлів.

В основному користувач має справу з файлами трьох типів:

Більшість сучасних файлових систем використовують в якості основного організаційного принципу каталоги.

Прийнято говорити, що каталог містить в собі файли або інші каталоги. Каталог у системі Linux лише посилається на них, фізичне розміщення даних на диску, зазвичай, ніяк не пов’язане з розміщенням каталогу.

Каталог - це список посилань на файли або інші каталоги. Каталог, на який є посилання в даному каталозі, називається підкаталогом або вкладеним каталогом.
Що таке каталог у Linux?

Каталог у файловій системі Linux найбільше нагадує бібліотечний каталог, що містить посилання на об’єднані за певними ознаками книги та інші розділи каталогу (файли і підкаталоги). Посилання на один і той же файл може міститися в декількох каталогах одночасно, що робить доступ до файла зручнішим.

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

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

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

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

3.2. Назви файлів і каталогів

Головні відмінні ознаки файлів і каталогів - це їх імена. У Linux імена файлів і каталогів можуть бути довжиною не більше 256 символів і можуть містити будь-які символи, крім /. Причина цього обмеження очевидна: символ / (прямий слеш) використовується як роздільник імен у складі шляху до файлів і каталогів, тому не повинен зустрічатися в самих іменах.

У Linux всі імена файлів і каталогів є чутливими до регістру, тобто спокійно можна створити в одному каталозі два файли з однаковими іменами, але записаними у різних регістрах, наприклад, Ubuntu.txt і ubuntu.txt.

Є кілька символів, допустимих в іменах файлів і каталогів, які потрібно використовувати з обережністю:

  • спецсимволи: *, \, &, <, >, ;, (, ), ǀ, -;

  • пропуски і табуляції.

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

У Linux в іменах файлів і каталогів допустимо використовувати будь-які символи будь-якої мови.

Файли, створені у Linux, не завджи можна прочитати у іншій операційній системі. Щоб уникнути таких проблем, рекомендують давати назви файлам тільки символами ASCII, а для вмісту файлів використовувати універсальне кодування UTF-8.

3.3. Розширення файлів

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

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

У старих файлових системах, організованих за принципом 8 + 3 (наприклад, DOS, ISO-9660), в імені файла дозволяється не більше однієї точки і розширення може бути не довше 3-х символів. Це обмеження визначило вигляд багатьох, із відомих сьогодні, розширень файлів, наприклад, .txt для текстових файлів.

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

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

Визначення типу даних у файлі

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

У розпорядженні користувача Linux завжди є утиліта file, яка призначена саме для визначення типу даних, що містяться у файлі. Використання її показано на наступному прикладі

teacher@teacher-VirtualBox:~/terminal_work$ file Epilogue.mp3
Epilogue.mp3: Audio file with ID3 version 2.3.0, contains:MPEG ADTS, layer III, v1, 320 kbps, 44.1 kHz, Stereo
teacher@teacher-VirtualBox:~/terminal_work$ file new_file.txt
new_file.txt: ASCII text

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

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

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

teacher@teacher-VirtualBox:~/terminal_work$ file ./python_files
./python_files: directory

3.4. Дерево каталогів

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

Кореневий каталог може містити файли і підкаталоги (каталоги першого рівня вкладеності). Підкаталоги, у свою чергу, також можуть містити файли і підкаталоги (каталоги другого рівня вкладеності) і т.д.

Таким чином, усе, що записано на диску - це файли, каталоги - обов’язково належить кореневому каталогу: або безпосередньо (міститься в ньому), або на деякому рівні вкладеності.

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

Структуру файлової системи Linux можна уявити наочно у вигляді дерева, коренем якого є кореневий каталог, а у вершинах розташовані всі інші каталоги.

Ієрархія файлової системи Linux
Ієрархія файлової системи Linux

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

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

Положення будь-якого каталогу в дереві каталогів точно і однозначно описується за допомогою повного шляху. Повний шлях завжди починається від кореневого каталогу і складається з перерахованих усіх вершин, які зустрілися при русі по гілках дерева до шуканого каталогу включно. Назви сусідніх вершин розділяються символом / (прямий слеш).

Шлях до файлів і каталогів у Linux

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

Файлова система Linux дуже сильно відрізняється від файлової системи Windows у правилах утворення такої адреси. Найголовніша відмінність в тому, що адреса файла починається не з назви диска, наприклад, C:\ або D:\, як це відбувається у Windows, а з кореня (кореневого каталогу), до якого підключені всі інші каталоги. Його адреса - /.

Шляхи до файлів і каталогів Linux використовують прямий слеш / для поділу каталогів в адресі, на відміну від Windows, де використовується зворотний слеш \.

Наприклад, якщо у Windows повний шлях до файла на робочому столі виглядає так: C:\Users\Teacher\Desktop\, то шлях до файла у linux буде таким: /home/teacher/desktop/.

В операційній системі Linux може бути кілька видів шляхів до файла:

  • абсолютний (повний) шлях від кореня файлової системи - починається від кореня / і описує весь шлях до файла;

  • відносний шлях - шлях до файла відносно поточного каталогу;

  • шлях у файловій системі не від кореня, а шлях відносно домашнього каталогу поточного користувача.

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

3.5. Ієрархія компонентів системи

Дерево каталогів файлової системи Linux однакове (або майже однакове) в будь-якому дистрибутиві Linux.

У кореневому каталозі Linux-системи, зазвичай, знаходяться тільки підкаталоги зі стандартними іменами. Більше того, не тільки імена каталогів, але і типи даних, які можуть потрапити в той чи інший каталог, також регламентовані стандартом. Цей стандарт називається Filesystem Hierarchy Standard (стандартна структура файлових систем).

Опишемо коротко, що знаходиться у деяких з підкаталогів кореневого каталогу.

/bin

Назва цього каталогу походить від слова binaries (двійкові файли). В цьому каталозі зберігаються команди операційної системи.

/boot

boot - завантаження системи. В цьому каталозі розташовані файли-образи ядер Linux і завантажувачі системи (наприклад, завантажувач GRUB).

/dev

В цьому каталозі знаходяться усі доступні в системі файли особливого типу, призначені для звернення до різних системних ресурсів і пристроїв (від англ. devices, звідси і скорочена назва каталогу).

/etc

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

/home

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

/lib

Назва цього каталогу - скорочення від англ. libraries (бібліотеки). Бібліотеки - це зібрання найбільш стандартних функцій, необхідних багатьом програмам: операцій введення/виведення, малювання елементів графічного інтерфейсу та інших. Щоб не включати ці функції в текст кожної програми, використовуються стандартні функції бібліотек - це значно економить місце на диску і спрощує написання програм. У цьому каталозі містяться бібліотеки, необхідні для роботи найбільш важливих системних утиліт, які розміщені в каталогах /bin і /sbin.

/mht

Каталог для монтування (від англ. mount) - тимчасового підключення файлових систем, наприклад, на знімних носіях (флеш-диски, CD-ROM та інші).

/proc

У цьому каталозі всі файли віртуальні - вони розташовуються не на диску, а в оперативній пам’яті. У цих файлах міститься інформація про програми (процеси), які виконуються в даний момент у системі.

/root

Домашній каталог адміністратора системи - суперкористувача root. Сенс розміщувати його окремо від домашніх каталогів інших користувачів полягає в тому, що /home може розташовуватися на окремому пристрої, який не завжди доступний (наприклад, на мережевому диску), а домашній каталог root повинен бути присутнім у будь-якій ситуації.

/sbin

Каталог для найважливіших системних утиліт (назва каталогу - скорочення від system binaries): на додаток до утиліт /bin тут знаходяться програми, необхідні для завантаження, резервного копіювання, відновлення системи. Повноваження на виконання цих програм є тільки у суперкористувача.

/tmp

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

/usr

Каталог /usr містить підкаталоги bin, etc, lib, sbin, як і в кореневому каталозі. Однак, у кореневий каталог потрапляють тільки утиліти, необхідні для завантаження і відновлення системи в аварійній ситуації, усі інші програми і дані розташовуються в підкаталогах /usr. Цей каталог містить усі встановлені пакунки програм.

/var

Назва цього каталогу - скорочення від variable (змінні дані). Тут розміщуються ті дані, які створюються в процесі роботи різними програмами і призначені для передачі іншим програмам і системам (черги друку, системні журнали, що містять протоколи роботи системи, тощо). На відміну від каталогу /tmp, сюди потрапляють ті дані, які можуть знадобитися після того, як програма, що їх створила, завершила роботу.

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

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

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

Короткий опис стандартної ієрархії каталогів Linux можна отримати, виконавши в терміналі команду man hier.

4. Термінал

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

Термінал - це програма Linux, яка має інтерфейс командного рядка і є потужним інструментом, за допомогою якого здійснюється ефективне керування операційною системою.

За допомогою термінала можна:

  • встановлювати і запускати програми;

  • працювати з файлами;

  • налаштовувати систему та багато іншого.

При достатньому рівні знань, дії в терміналі виконуються набагато швидше і ефективніше.

Наприклад, не потрібно шукати пункти меню, клікати кілька разів мишкою, виконувати пошук програми у системі тощо. Досить просто набрати одну команду, передати їй потрібні параметри, натиснути Enter і комп’ютер виконає всі потрібні дії.

У даному випадку, команда - це ім’я програми, яке вводиться в терміналі для її запуску. Разом з ім’ям в команді можуть бути присутніми опції і параметри.

Для запуску термінала в Ubuntu натисніть сполучення клавіш Ctrl+Alt+T або використайте утиліту Показати програми Утиліта Показати програми в Ubuntu.
Термінал в Ubuntu
Термінал в Ubuntu

Після запуску термінала у його вікні з’являється послідовніть символів, на зразок: teacher@teacher-VirtialBox:~$, яку можна розшифрувати так (@ і : - символи розділювачів):

teacher

ім’я поточного користувача в системі.

teacher-VirtualBox

назва комп’ютера.

~

(символ тильда) поточний каталог, в якому будуть виконуватись введені команди, інша назва - домашній каталог користувача (у даному випадку /home/teacher).

$

символ запрошення до введення команд.

Спробуємо термінал у дії. Введемо команду lsb_release -a у терміналі, щоб дізнатися інформацію про поточну версію Ubuntu

teacher@teacher-VirtualBox:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04 LTS
Release:	18.04
Codename:	bionic
teacher@teacher-VirtualBox:~$

Щоб отримати інформацію про поточне ядро системи Ubuntu використовують команду uname -a

teacher@teacher-VirtualBox:~$ uname -a
Linux teacher-VirtualBox 4.15.0-28-generic #30-Ubuntu SMP Thu Jul 12 17:35:57 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Для отримання лише назви ядра можна виконати команду uname -r

teacher@teacher-VirtualBox:~$ uname -r
4.15.0-28-generic

4.1. Запуск програм

Запуск програм можна здійснювати не лише через Показати програми Утиліта Показати програми в Ubuntu, але і за допомогою термінала.

Наприклад, щоб відкрити програму текстового редактора gedit, який вбудований в Ubuntu за замовчуванням, необхідно ввести у терміналі латинськими малими літерами команду - назву програми gedit

teacher@teacher-VirtualBox:~$ gedit

Виконання команди запускає у терміналі процес, пов’язаний з текстовим редактором gedit, тому закриття термінала призведе до переривання процесу, відповідно до закриття програми.

Коли в терміналі Linux виконується якась команда, нам потрібно почекати її завершення, щоб виконати наступну. Або відкрити нове вікно термінала для виконання іншої команди.

Запуск програми у терміналі можна зробити по іншому

teacher@teacher-VirtualBox:~$ gedit & exit

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

4.2. Правила роботи

Робота у командному рядку термінала Linux може виконуватися за допомогою великої кількості команд. Багато з них, наприклад, для навігації по каталогам, перегляду вмісту файлів і каталогів, встановлення програм вже присутні у системі.

Команди термінала Linux чутливі до регістру. sudo, SUDO, sUdO - не одне й те ж саме, спрацює тільки перший варіант команди. У більшості випадків у записі команд використовуються малі літери, але іноді регістр все ж переключається, у разі використання разом із командою опцій і параметрів (chown -R).

При використанні імен файлів і каталогів також важливо правильно вводити назви: file1 і File1 - різні файли, навіть, якщо вони знаходяться в одному каталозі.

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

Для прикладу, якщо у домашньому каталозі користувача (/home/teacher) ввести Зав і натиснути клавішу Tab, атозаповнення спрацює лише для одного слова Завантаження, назва якого повністю з’явиться в рядку.

Якщо ж ввести За і двічі натиснути клавішу Tab, на екрані з’являться можливі варіанти назв каталогів

teacher@teacher-VirtualBox:~$ За
Завантаження/     Загальнодоступні/

Введення літери З і подвійне натискання клавіші Tab дасть наступний результат

teacher@teacher-VirtualBox:~$ З
Завантаження/     Загальнодоступні/ Зображення/

При введенні команд потрібно бути обережним із використанням пропусків. Команда chown-R видасть помилку (правильно chown -R), так як команда і опція склеїлися.

Щоб створити/відкрити/видалити файл або каталог, у назві яких є пропуск, можна взяти все ім’я в лапки або замінити пропуск на зворотний слеш \ і пропуск. Якщо цього не зробити, то, наприклад, команда mkdir, що створює каталог, створить 2 каталоги: Назва і каталогу, а використання інших команд просто видасть помилку

teacher@teacher-VirtualBox:~/Документи$ mkdir Назва каталогу
teacher@teacher-VirtualBox:~/Документи$ ls # ls - команда для перегляду вмісту каталогу
Назва  каталогу
teacher@teacher-VirtualBox:~/Документи$ mkdir Назва\ каталогу2
teacher@teacher-VirtualBox:~/Документи$ ls
 Назва  'Назва каталогу2'   каталогу
teacher@teacher-VirtualBox:~/Документи$ mkdir "Назва каталогу3"
teacher@teacher-VirtualBox:~/Документи$ ls
 Назва  'Назва каталогу2'  'Назва каталогу3'   каталогу

Сполучення клавіш Ctrl+C і Ctrl+V для копіювання і вставки у терміналі не працюють. Тому необхідно використовувати сполучення клавіш Ctrl+Shift+C і Ctrl+Shift+V відповідно або користуватись контекстним меню.

Якщо натискати на клавіатурі клавіші або , в поточному рядку термінала будуть з’являтися команди, які вже були виконані.

Для очищення вікна термінала користуються командою clear.

4.3. Синтаксис команд

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

Більшість стандартних команд дотримуються синтаксису

команда опції параметр1 параметр2 …

Опції часто необов’язкові і уточнюють той чи інший аспект роботи програми. Вони записуються у формі:

  • риска та символ (наприклад, -o)

  • дві риски та слово (наприклад, --output).

Наведемо кілька прикладів для команди ls.

Без опцій і параметрів

teacher@teacher-VirtualBox:~$ ls
Відео      Завантаження      Зображення  Стільниця  examples.desktop
Документи  Загальнодоступні  Музика      Шаблони    pythonguide

З параметром, що вказує назву каталогу, вміст якого необхідно подивитися

teacher@teacher-VirtualBox:~$ ls pythonguide
basketball_teams.py  cities_facts.py  quest.py

або

teacher@teacher-VirtualBox:~$ ls ./pythonguide
basketball_teams.py  cities_facts.py  quest.py

З опцією -l, яка дозволяє вивести вміст каталогу у вигляді деталізованого списку

teacher@teacher-VirtualBox:~$ ls -l
загалом 48
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Відео
drwxr-xr-x 2 teacher teacher 4096 кві 30 20:38 Документи
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Завантаження
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Загальнодоступні
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Зображення
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Музика
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Стільниця
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Шаблони
-rw-r--r-- 1 teacher teacher 8980 кві 30 18:41 examples.desktop
drwxr-xr-x 2 teacher teacher 4096 кві 30 20:43 pythonguide

З опцією -l і параметром, що вказує назву каталогу, вміст якого необхідно подивитися

teacher@teacher-VirtualBox:~$ ls -l pythonguide
загалом 12
-rwxrwx--- 1 teacher teacher 1418 сер  5  2017 basketball_teams.py
-rwxrwx--- 1 teacher teacher 1492 сер  5  2017 cities_facts.py
-rwxrwx--- 1 teacher teacher  491 сер  5  2017 quest.py

З двома опціями -l і -a (показати приховані каталоги і файли) та параметром, що вказує назву каталогу, вміст якого необхідно подивитися

teacher@teacher-VirtualBox:~$ ls -l -a pythonguide
загалом 20
drwxr-xr-x  2 teacher teacher 4096 кві 30 20:43 .
drwxr-xr-x 15 teacher teacher 4096 кві 30 20:38 ..
-rwxrwx---  1 teacher teacher 1418 сер  5  2017 basketball_teams.py
-rwxrwx---  1 teacher teacher 1492 сер  5  2017 cities_facts.py
-rwxrwx---  1 teacher teacher  491 сер  5  2017 quest.py

Можна комбінувати дві опції так

teacher@teacher-VirtualBox:~$ ls -la pythonguide
загалом 20
drwxr-xr-x  2 teacher teacher 4096 кві 30 20:43 .
drwxr-xr-x 15 teacher teacher 4096 кві 30 20:38 ..
-rwxrwx---  1 teacher teacher 1418 сер  5  2017 basketball_teams.py
-rwxrwx---  1 teacher teacher 1492 сер  5  2017 cities_facts.py
-rwxrwx---  1 teacher teacher  491 сер  5  2017 quest.py

4.4. Об’єднання команд

У командному рядку Linux можна об’єднувати відразу кілька команд. Наприклад, необхідно виконати спочатку одну команду, за нею другу і так далі. Для цього завдання необхідно написати у командному рядку одну інструкцію, яка це все виконає, використавши службові символи ; && || |.

Наприклад, необхідно виконати спочатку одну команду. Потім, коли вона відпрацює (поверне управління в командний рядок), потрібно запустити другу команду. Для цього служить символ крапка з комою ;.

Таким чином, якщо у терміналі виконати команди для оновлення програмного забезпечення операційної системи Ubuntu

sudo apt update; sudo apt upgrade

то спочатку запуститься перша команда sudo apt update, а коли управління повернеться у термінал, то запуститься друга команда sudo apt upgrade. Це називається послідовним виконанням команд. Незалежно від того, як виконалася попередня команда, друга команда повинна буде запуститися.

Символи && і || означають не що інше, як логічне І та АБО. Тому коли записати

команда1 && команда2 && команда3

то це означає, що команда команда2 буде виконана тільки в тому випадку, якщо команда команда1 була виконана успішно. Кожна наступна команда виконується тільки при успішному виконанні попередньої.

Якщо виконати конструкцію

команда1 || команда2 || команда3

то команда команда2 буде виконана тільки тоді, якщо команда1 повернула помилку. Кожна наступна команда буде працювати тільки тоді, якщо попередня повернула помилку.

Якщо виконати інcтрукцію

команда1 | команда2

то результат виконання команда1 буде переданий на вхід команда2.

4.5. Шлях до файлів і каталогів

При роботі у терміналі Linux дуже часто необхідно разом із використанням команд вказувати шлях до файлів або каталогів файлової системи.

Розглянемо докладніше як виглядають шляхи в Linux на основі кількох прикладів. Для демонстрації будемо користуватися командою ls, яка призначена для перегляду вмісту каталогів.

Наприклад, у нас є каталог pythonguide в домашньому каталозі користувача з трьома файлами у ньому

teacher@teacher-VirtualBox:~/pythonguide$ ls
basketball_teams.py  cities_facts.py  quest.py

Ось так буде виглядати абсолютний (повний) шлях до файла basketball_teams.py

teacher@teacher-VirtualBox:~$ ls /home/teacher/pythonguide/basketball_teams.py
/home/teacher/pythonguide/basketball_teams.py

Відносний шлях щодо поточного каталогу pythonguide до файла cities_facts.py буде таким

teacher@teacher-VirtualBox:~$ ls pythonguide/cities_facts.py
pythonguide/cities_facts.py

Відносний шлях, який починається від домашнього каталогу, що позначається ~, до файла quest.py буде таким

teacher@teacher-VirtualBox:~$ ls ~/pythonguide/quest.py
/home/teacher/pythonguide/quest.py

В кожному каталозі є два приховані посилання, які можна побачити за допомогою команди ls, виконавши її з параметром -a (показати приховані файли та каталоги)

teacher@teacher-VirtualBox:~/pythonguide$ ls -a
.  ..  basketball_teams.py  cities_facts.py  quest.py

Перше посилання (.) вказує на поточний каталог, друге (..) вказує на каталог рівнем вище. Ці посилання відкривають широкі можливості для навігації по каталогам за допомогою термінала.

Наприклад, щоб посилатися на файл quest.py у поточному каталозі pythonguide, можна використовувати конструкцію ./quest.py. Така конструкція є важливою при виконанні програми.

Якщо потрібно запустити програму, яка знаходиться в поточному каталозі і вона називається так само як і програма у каталозі виконуваних файлів /bin, то без явного посилання, що файл потрібно шукати в поточному каталозі, нічого не вийде.

Друге посилання дозволяє отримати доступ до файлів у каталозі вище поточного

teacher@teacher-VirtualBox:~/pythonguide$ ls ../pythonguide/cities_facts.py
../pythonguide/cities_facts.py

4.6. Довідка по команді

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

teacher@teacher-VirtualBox:~$ pwd --help
pwd: pwd [-LP]
    Виводить назву поточного робочого каталогу.

    Параметри:
      -L	Вивести значення $PWD, якщо вона вказує поточний робочий каталог.
      -P	Вивести фізичне розташування каталогу, без символічних посилань.

    Зазвичай `pwd' працює як ніби вказано `-L'.

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

Або можна використати альтернативний варіант - команду man

man назва_команди

4.7. Навігація файловою системою

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

teacher@teacher-VirtualBox:~$
Значок ~ (тильда) - означає домашній каталог поточного користувача.

Щоб дізнатися поточний каталог (відобразити повний шлях до поточного каталогу), у терміналі досить набрати команду pwd

teacher@teacher-VirtualBox:~$ pwd
/home/teacher

Наступна команда, яка використовується в навігації - це ls. Якщо ввести у терміналі ls, відобразиться вміст поточного каталогу

teacher@teacher-VirtualBox:~$ ls
Відео      Завантаження      Зображення  Стільниця  examples.desktop
Документи  Загальнодоступні  Музика      Шаблони    pythonguide

Безпосередньо для навігації в терміналі використовується команда cd.

Спочатку записується команда cd, потім шлях, куди потрібно перейти. Ось так виглядає перехід в каталог /home

teacher@teacher-VirtualBox:~$ cd /home
teacher@teacher-VirtualBox:/home$

Підведемо підсумки використання вищезгаданих команд на такому прикладі

teacher@teacher-VirtualBox:~$ pwd (1)
/home/teacher
teacher@teacher-VirtualBox:~$ ls (2)
Відео      Завантаження      Зображення  Стільниця  examples.desktop
Документи  Загальнодоступні  Музика      Шаблони    pythonguide
teacher@teacher-VirtualBox:~$ cd Стільниця (3)
teacher@teacher-VirtualBox:~/Стільниця$ ls (4)
python_work
teacher@teacher-VirtualBox:~/Стільниця$ cd python_work (5)
teacher@teacher-VirtualBox:~/Стільниця/python_work$ ls (6)
hello.py
teacher@teacher-VirtualBox:~/Стільниця/python_work$ python3 hello.py (7)
Hello, Ubuntu (8)
teacher@teacher-VirtualBox:~/Стільниця/python_work$ cd .. (9)
teacher@teacher-VirtualBox:~/Стільниця$ cd ~ (10)
teacher@teacher-VirtualBox:~$
  1. Дізнаємося поточне розташування у файловій системі з використанням команди pwd (після запуску термінала поточний каталог - домашній каталог користувача /home/teacher).

  2. Читаємо вміст поточного каталогу /home/teacher з використанням команди ls.

  3. Переходимо у каталог Стільниця з використанням команди cd.

  4. Читаємо вміст каталогу Стільниця (всередині каталог python_work).

  5. Переходимо у каталог python_work з використанням команди cd.

  6. Читаємо вміст каталогу python_work (всередині файл hello.py з програмою для виведення вітального повідомлення).

  7. Запускаємо на виконання файл hello.py (ввести python3 та ім’я файла).

  8. Відображення привітання Hello, Ubuntu! у вікні термінала.

  9. Переходимо на рівень вгору в дереві каталогів з використанням інструкції cd ...

  10. Переходимо у домашній каталог користувача з використанням інструкції cd ~.

4.8. Файли і каталоги

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

4.8.1. Створення текстових файлів

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

Рекомендується, так чи інакше, перевести всю текстову інформацію на використання кодування UTF-8, оскільки фактично тільки це кодування нормально розпізнається всюди і завжди.

Текстовий файл у терміналі Linux можна створити кількома способами.

Команда touch

Для створення текстового файла необхідно ввести команду touch, потім шлях і назву нового файла

touch /шлях/до/файла/назва_файла.txt

Наприклад, створимо текстовий файл в поточному каталозі terminal_work з назвою file.txt

teacher@teacher-VirtualBox:~/terminal_work$ touch file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls
file.txt

Команда ls показує, що у поточному каталозі terminal_work з’явився створений файл file.txt.

Зберегти у файл із термінала

Інколи, виведення результатів роботи деяких термінальних команд може бути занадто об’ємним. Наприклад, виведення списку програм, які можуть бути оновлені у системі, у вікно термінала за допомогою команди

sudo apt list --upgradable

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

Перенаправлення введення/виведення у Linux

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

У Linux все вважається файлами, у тому числі, і стандартні потоки введення/виведення - це також файли. У кожному дистрибутиві є три основні файли потоків:

  1. stdin або 0 - стандартний потік введення (цей файл пов’язаний з клавіатурою і більшість команд отримують дані для роботи з нього);

  2. stdout або 1 - стандартний потік виведення (у цей файл команди відправляють усі результати своєї роботи, він пов’язаний з екраном, або, якщо бути точним, то з терміналом, в якому виконуються команди);

  3. stderr 2 - стандартний потік повідомлень про помилки, відлагодження (виведення помилок на екран).

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

teacher@teacher-VirtualBox:~/terminal_work$ cat
Hello
Hello
Ubuntu
Ubuntu
and
and
Python!
Python!

У даному випадку стандартний потік введення отримує введені з клавіатури дані і відразу виводить на stdout - стандартний потік виведення (на екран у вікні термінала).

Стандартний потік введення припиняє роботу після досягнення EOF (кінця файла), який вказує на те, що даних для читання більше немає. EOF викликається натисканням сполучення клавіш Ctrl+D.

Але можна змусити програму читати дані не з клавіатури, а з файла за допомогою оператора <

teacher@teacher-VirtualBox:~/terminal_work$ cat < new_file.txt
1
2
3
4
5

У даному прикладі команда cat відправляє отримані вхідні дані з файла new_file.txt (послідовність цифр, записаних в окремих рядках) на екран термінала в якості стандартного потоку виведення і зупиняється після того як отримує кінець файла (EOF).

Коли у терміналі виконуються команди (наприклад, echo, date, uptime або інші)

teacher@teacher-VirtualBox:~$ echo "Hello, Python!"
Hello, Python!
teacher@teacher-VirtualBox:~$ date
середа, 16 травня 2018 16:59:04 +0300
teacher@teacher-VirtualBox:~$ uptime
 16:59:13 up 15 min,  1 user,  load average: 1,44, 0,47, 0,31

то результати виконання цих команд - це stdout - стандартний потік виведення.

А ось так виглядає stderr - стандартний потік повідомлень про помилки

teacher@teacher-VirtualBox:~$ apt update
Зчитування переліків пакунків... Виконано
E: Неможливо відкрити 'lock' файл /var/lib/apt/lists/lock - open (13: Відмовлено у доступі)
E: Неможливо заблокувати директорію /var/lib/apt/lists/
W: Проблема з роз'єднанням файла /var/cache/apt/pkgcache.bin - RemoveCaches (13: Відмовлено у доступі)
W: Проблема з роз'єднанням файла /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Відмовлено у доступі)

в якому рядки з помилками починаються з літери E (error), а рядки з попереджувальною інформацією починаються з літери W (warning).

Отже, створити текстовий файл можна перенаправленням виведення будь-якої команди у текстовий файл. У загальному випадку команда має такий вигляд

яка_небудь_команда > /шлях/до/файла/назва_файла.txt

Наприклад, збережемо виведення довідки команди ls у файл (якщо такий файл вже існує, то він буде перезаписаний; для перегляду вмісту файла використаємо команду cat)

teacher@teacher-VirtualBox:~/terminal_work$ ls --help > ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls
file.txt  ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$ cat ls_help.txt
Використання: ls [КЛЮЧ]... [ФАЙЛ]...
Виводить дані щодо ФАЙЛів (типово у поточному каталозі).
Впорядковує у алфавітному порядку, якщо не вказано ні --sort, ні один з
параметрів -cftuSUX.

Обов'язкові аргументи для довгих форм запису параметрів є обов'язковими і для скорочених форм.
  -a, --all                  не ігнорувати записи, що починаються з .
  -A, --almost-all           не виводити неявні . і ..
      --author               разом з -l, виводити автора кожного файла
  -b, --escape               виводити вісімкові керівні послідовності
                             замість неграфічних знаків
      --block-size=РОЗМІР    використовувати блоки розміром РОЗМІР.
...

Якщо вказати одинарний символ >, то файл буде постійно перезаписуватися при повторному виконанні команди. Щоб нова інформація додавалась у кінець файла (тобто, файл не перезаписувався), необхідно використовувати подвійний символ >>. Команда може мати такий вигляд

teacher@teacher-VirtualBox:~$ date >> log.txt # вивести поточні дату й час
teacher@teacher-VirtualBox:~$ whoami >> log.txt # вивести ім'я поточного користувача
teacher@teacher-VirtualBox:~$ cat log.txt
середа, 16 травня 2018 18:06:29 +0300
teacher

Якщо необхідно створити порожній текстовий файл, то використовують команду echo і переданий їй порожній рядок (дві одинарні лапки)

teacher@teacher-VirtualBox:~/terminal_work$ echo '' > empty_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls
empty_file.txt  file.txt  ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$ cat empty_file.txt

teacher@teacher-VirtualBox:~/terminal_work$

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

Таблиця "Зберігання виведення термінала у файл"
Синтаксис Відображення у терміналі Відображення у файлі Існуючий файл

stdout

stderr

stdout

stderr

>

ні

так

так

ні

перезапис

>>

ні

так

так

ні

дозапис

2>

так

ні

ні

так

перезапис

2>>

так

ні

ні

так

дозапис

&>

ні

ні

так

так

перезапис

&>>

ні

ні

так

так

дозапис

| tree

так

так

так

ні

перезапис

| tree -a

так

так

так

ні

дозапис

Використання текстового редактора

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

nano file.txt

Або можна використати gedit - текстовий редактор з графічним інтерфейсом, який вбудований у дистрибутив Ubutnu за замовчуванням

gedit file.txt

4.8.2. Створення каталогів

У терміналі усі команди, якщо вони виконуються без додаткових параметрів, «прив’язуються» до поточного каталогу.

Створення каталогів виконується командою mkdir. Розглянемо кілька прикладів використання.

  1. Створити каталог з іменем dir1

mkdir dir1
  1. Створити три каталоги одночасно всередині поточного каталогу

mkdir {dir1,dir2,dir3}
  1. Створити вкладені один в одного три каталоги (використовується опція -p - створювати батьківські каталоги) всередині поточного каталогу

mkdir -p ./dir1/dir2/dir3

Створимо новий каталог linuxguide у поточному каталозі terminal_work (використаємо команду ls для наочності створення)

teacher@teacher-VirtualBox:~/terminal_work$ ls
file.txt  ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$ mkdir linuxguide
teacher@teacher-VirtualBox:~/terminal_work$ ls
file.txt  linuxguide  ls_help.txt

4.8.3. Видалення файлів і каталогів

Для видалення каталогів використовують команду rmdir у такому вигляді

rmdir назва_каталогу

Наприклад, виконаємо команду rmdir у поточному каталозі terminal_work для видалення каталогу linuxguide (використаємо команду ls для наочності видалення)

teacher@teacher-VirtualBox:~/terminal_work$ ls
file.txt  linuxguide  ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$ rmdir linuxguide
teacher@teacher-VirtualBox:~/terminal_work$ ls
file.txt  ls_help.txt

Для видалення файлів використовується команда rm. Використовується дуже просто: пишеться команда rm і шлях до файла, який необхідно видалити

teacher@teacher-VirtualBox:~/terminal_work$ ls
empty_file.txt  file.txt  ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$ rm empty_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls
file.txt  ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$

Команда rm дозволяє видаляти не тільки файли, але і каталоги разом із їхнім вмістом. Наприклад, якщо необхідно видалити каталог з іменем dir1 і рекурсивно (опція -r) його вміст (усі вкладені каталоги і файли), треба виконати наступну команду

rm -r dir1

Видалити два каталоги і рекурсивно їхній вміст

rm -r dir1 dir2

Також можна використати опцію -f, яка означає, що система під час видалення не буде запитувати підтвердження на видалення. У підсумку, команда для видалення файла file1 без підтвердження

rm -f file1

або команда для рекурсивного видалення каталогу dir1 без підтвердження

rm -rf dir1

4.8.4. Переміщення та перейменування

Для переміщення і перейменування файлів і каталогів використовується команда mv.

Формат запису команди перейменовування є таким

mv назва_файла нова_назва_файла

Якщо останній аргумент є ім’ям існуючого каталогу, то mv переміщує усі задані файли в цей каталог

mv назва_файла назва_каталогу
Якщо останній аргумент не є каталогом і аргументами зазначено більш ніж два файли, то з’явиться повідомлення про помилку.

Наприклад, перейменуємо у поточному каталозі файл file.txt у файл з назвою new_file.txt

teacher@teacher-VirtualBox:~/terminal_work$ ls
file.txt  ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$ mv file.txt new_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls
ls_help.txt  new_file.txt

Перемістимо щойно перейменований файл new_file.txt у каталог Документи, який знаходиться від поточного каталогу terminal_work на рівень вгору у дереві каталогів

teacher@teacher-VirtualBox:~/terminal_work$ ls (1)
ls_help.txt  new_file.txt (2)
teacher@teacher-VirtualBox:~/terminal_work$ ls ../Документи/ (3)
teacher@teacher-VirtualBox:~/terminal_work$ mv new_file.txt ../Документи/ (4)
teacher@teacher-VirtualBox:~/terminal_work$ ls (5)
ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls ../Документи/ (6)
new_file.txt

Алгоритм такого переміщення файла з одного каталогу в інший можна описати так:

  1. Переглядаємо список файлів у поточному каталозі terminal_work за допомогою команди ls.

  2. У каталозі terminal_work присутній файл new_file.txt.

  3. Переглядаємо каталог Документи, куди будемо переміщувати файл new_file.txt. Він є порожнім.

  4. Виконаємо переміщення файла new_file.txt у каталог Документи за допомогою команди mv.

  5. Файл new_file.txt відсутній у поточному каталозі terminal_work.

  6. Як бачимо, файл new_file.txt був переміщений у каталог Документи.

4.8.5. Копіювання файлів і каталогів

Для копіювання файлів і каталогів використовується команда cp.

Розглянемо кілька прикладів копіювання.

  1. Скопіювати файл new_file.txt у поточний каталог terminal_work і назвати копію файла other_file.txt

teacher@teacher-VirtualBox:~/terminal_work$ ls
ls_help.txt  new_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ cp new_file.txt other_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls
ls_help.txt  new_file.txt  other_file.txt
  1. Скопіювати каталог NewAge у каталог Music (опція -a - показати приховані файли і каталоги) (1), а потім скопіювати файл Epilogue.mp3 у каталог Music/NewAge/ (2)

teacher@teacher-VirtualBox:~/terminal_work$ ls
Epilogue.mp3  ls_help.txt  Music  NewAge  new_file.txt  other_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls Music/
teacher@teacher-VirtualBox:~/terminal_work$ ls NewAge/
teacher@teacher-VirtualBox:~/terminal_work$ cp -a NewAge/ Music/ (1)
teacher@teacher-VirtualBox:~/terminal_work$ ls Music/
NewAge
teacher@teacher-VirtualBox:~/terminal_work$ cp Epilogue.mp3 Music/NewAge/ (2)
teacher@teacher-VirtualBox:~/terminal_work$ ls Music/NewAge/
Epilogue.mp3

4.8.6. Зміна прав доступу до файлів і каталогів

Права доступу і типи файлів

Будь-який файл і каталог у Linux має користувача-власника і групу-власника. Тобто, будь-який файл і каталог належить якомусь користувачу системи і певній групі.

Крім того, у будь-якого файла і каталогу є три групи прав доступу:

  • для користувача-власника;

  • для членів групи-власника;

  • для усіх інших користувачів системи.

Кожна група складається з прав:

  • на читання;

  • на запис;

  • на запуск файла на виконання.

Переглянути права доступу на файли і каталоги у певному каталозі можна з використанням термінала. Для цього необхідно перейти у каталог (наприклад, у домашній каталог користувача) і виконати команду у терміналі ls (показати вміст каталогу), додавши опцію -l (у вигляді списку)

teacher@teacher-VirtualBox:~$ ls -l
...
drwxr-xr-x  2 teacher teacher 4096 січ 14 14:31 Документи
...
-rwxr-xr-x  1 teacher teacher    0 гру 31 15:15 test

У першій колонці списку якраз і відображена інформація про права доступу на файл або каталог на зразок

drwxr-xr-x

drwxr-xr-x - це символьна форма запису прав доступу у Linux. Давайте розшифруємо її.

Даний запис складається з 10 символів.

Перший символ позначає тип файла і може набувати значень, наведених у таблиці.

Таблиця "Типи файлів у Linux"
Позначення Тип файла Призначення

-

звичайний файл

найпоширеніший тип файлів в системі Linux (текстові файли, виконувані файли, файли зображень, архіви, бібліотеки програм тощо)

d

каталог

файли, в якості даних яких виступають списки інших файлів і каталогів. Саме у даних, що містить каталог, здійснюється зв’язок імені файла (словесного позначення) з його індексним дескриптором (ім’ям-числом). Звідси випливає, що один і той самий файл може існувати під різними іменами та/або у різних каталогах: усі імена будуть пов’язані із одним і тим же індексним дескриптором (механізм жорстких посилань)

l

символьне посилання

файли, які вказують на інші файли у системі за їхніми іменами (але не за індексними дескрипторами), їх часто називають м’якими посиланнями. Символьні посилання можуть вказувати як на звичайні файли, так і на каталоги або інші типи файлів (по суті, це ті ж ярлики Windows). Існують також жорсткі посилання. Різниця між жорсткими і м’якими посиланнями в тому, що м’які посилання посилаються на ім’я файла, в той час як жорсткі посилання прямо посилаються на оригінальний файл. Крім того, жорсткі посилання не працюють з файлами, розташованими на інших розділах або у інших файлових системах

p

іменований тунель

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

c

символьний файл пристрою

файли пристроїв, які призначені для звернення до апаратного забезпечення комп’ютера (дисків, принтерів тощо). Коли відбувається звернення до файла пристрою, то ядро ​​операційної системи надсилає запит драйверу цього пристрою. Характерною особливістю таких файлів є те, що їхній вміст (якщо він є) не буферизується (тобто, не зберігається у пам’яті). Оскільки у них немає буфера, вони дозволяють передавати тільки по одному символу за один раз

b

блочний файл пристрою

ці файли є периферійними пристроями і, на відміну від символьних файлів, їх вміст буферизується. Наприклад, файлами цієї категорії є жорсткі диски, розділи на жорсткому диску, флеш-диски, CD-ROM і т.д. Приклади файлів блокового доступу: /dev, /hda, /dev, /sda5. При записі даних на жорсткий диск або на флешку немає сенсу записувати дані відразу ж після їх надходження, оскільки буде даремно витрачатися ресурс пристрою і енергія. Можна почекати, поки набереться достатня кількість даних, а потім записати їх за один раз. Ці дані і збираються у буфері. За допомогою таких файлів, файлова система і багато інших програм можуть звертатися до драйверів апаратних пристроїв. Зчитувати і записувати інформацію на блокові пристрої можна у довільному порядку, причому блоками певного розміру

s

файл сокету

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

Тобто, у випадку запису drwxr-xr-x, це каталог.

Ідентифікація типів файлів у Linux

Для того, щоб ідентифікувати і класифікувати типи файлів, що є у Linux, необхідно використати команду ls (для перегляду вмісту каталогу) з опцією -l (детальний перегляд)

ls -l назва_файла

Результат роботи поданої конструкції перенаправимо (керуючий символ |) на вхід команди grep, яка виконає вибірку потрібних рядків і підсвічування типу файла. Остаточний варіант команди

ls -l назва_файла | grep "^x"

де x - позначення типу файла, яке приймає наступні значення: -, d, l, p, c, b, s.

Далі наведені приклади визначення різних типів файлів у Linux.

Звичайний файл (-)
teacher@teacher-VirtualBox:~$ ls -l /etc/passwd | grep "^-"
-rw-r--r-- 1 root root 2414 тра 12 10:13 /etc/passwd
Каталог (d)
teacher@teacher-VirtualBox:~$ ls -l /dev/ | grep "^d"
drwxr-xr-x  2 root    root         420 тра 20 08:47 block
...
Символьне посилання (l)
teacher@teacher-VirtualBox:~$ ls -l /dev/ | grep "^l"
lrwxrwxrwx  1 root    root           3 тра 20 08:47 cdrom -> sr0
...
lrwxrwxrwx  1 root    root          28 тра 20 08:47 log -> /run/systemd/journal/dev-log
...
Іменований тунель (p)
teacher@teacher-VirtualBox:~$ ls -l pipe1
prw-r--r-- 1 teacher teacher 0 тра 20 13:41 pipe1
Символьний файл пристрою (c)
teacher@teacher-VirtualBox:~$ ls -l /dev/ | grep "^c"
crw-r--r--  1 root    root     10, 235 тра 20 08:47 autofs
...
Блочний файл пристрою (b)
teacher@teacher-VirtualBox:~$ ls -l /dev/ | grep "^b"
...
brw-rw----  1 root    disk      8,   0 тра 20 08:47 sda
brw-rw----  1 root    disk      8,   1 тра 20 08:48 sda1
brw-rw----  1 root    disk      8,   2 тра 20 08:47 sda2
brw-rw----  1 root    disk      8,   3 тра 20 08:47 sda3
brw-rw----  1 root    disk      8,   5 тра 20 08:48 sda5
...
Файл сокету (s)
teacher@teacher-VirtualBox:~$ ls -l /tmp/.X11-unix/X0 | grep "^s"
srwxrwxrwx 1 teacher teacher 0 тра 20 08:50 /tmp/.X11-unix/X0

Наступні 9 символів позначають права доступу. Їх можна розділити на 3 групи, по 3 символи в кожній групі. Ось ці три групи

rwx r-x r-x
  1. Позначає права доступу власника файла або каталогу (u - user).

  2. Позначає права доступу на файл або каталог для групи (g - group).

  3. Позначає права доступу на файл або каталог для всіх інших (o - other).

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

rwx
Таблиця "Символьні атрибути прав доступу"
Позначення Опис

r

read, тобто, право доступу на читання файла або каталогу

w

write, тобто, право на зміну і видалення файла або каталогу

x

eXecute, тобто, право на запуск файла як програми або вхід у каталог

Якщо на місці якогось символу із цієї трійки знаходиться символ - (мінус), то це означає відсутність відповідних прав. Наприклад

r-x

означає, що права доступу на зміну і видалення файла або каталогу відсутні. У випадку

r--

відсутні права на:

  • зміну і видалення файла або каталогу;

  • запуск файла або вхід у каталог.

У нашому випадку, напис drwxr-xr-x можна прочитати так:

  • d - позначає каталог;

  • rwx - у власника каталогу є повні права - на читання, запис і виконання (вхід усередину каталогу);

  • r-x - у групи є лише права - на читання каталогу і виконання (вхід усередину каталогу);

  • r-x - в усіх інших є лише права - на читання каталогу і виконання (вхід усередину каталогу).

Права доступу до каталогів

Природно, що по відношенню до каталогів трактування понять право на читання, право на запис і право на виконання дещо змінюється.

Право на читання, по відношенню до каталогів, легко зрозуміти, якщо згадати, що каталог - це просто файл, який містить список файлів в даному каталозі. Отже, якщо ви маєте право на читання каталогу, то ви можете переглядати його вміст (цей самий список файлів в каталозі).

Право на запис також можна зрозуміти - маючи таке право, ви зможете створювати і видаляти файли в цьому каталозі, тобто просто додавати в каталог або видаляти з нього записи, що містять ім’я якогось файла і відповідні посилання.

Право на виконання інтуїтивно менш зрозуміле. У даному випадку воно означає право переходити у цей каталог. Якщо ви, як власник, хочете дати доступ іншим користувачам на перегляд якогось файла у своєму каталозі, ви повинні дати їм право доступу в каталог, тобто дати їм право на виконання каталогу. Більш того, треба дати користувачеві право на виконання для всіх каталогів, що стоять в дереві вище даного каталогу.

Може здатися, що право на читання каталогу не дає нічого нового в порівнянні з правом на виконання каталогу. Однак, різниця в цих правах все-таки є. Якщо задати тільки право на виконання, ви зможете увійти в каталог, але не побачите там жодного файла. Якщо ви маєте право доступу в якомусь із підкаталогів цього каталогу, то ви можете перейти в нього (командою cd), але, як то кажуть, наосліп, по пам’яті, тому що списку файлів і підкаталогів поточного каталогу ви не побачите.

Підсумовуючи, можна сформулювати наступні права доступу до каталогу:

  • r - право на читання каталогу (можна прочитати вміст каталогу, тобто отримати список об’єктів, що знаходяться у ньому);

  • w - право на зміну вмісту каталогу (можна створювати і видаляти об’єкти в цьому каталозі, причому, якщо ви маєте право на запис, то видаляти ви зможете навіть ті файли, які вам не належать);

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

Розглянемо запис прав доступу у числовому режимі.

Для прикладу, є наступна символьна комбінація прав доступу на певний каталог

drwxrwxr-x

Символ d означає, що це каталог. Наступні 9 символів, що позначають права доступу, поділимо на 3 групи по 3 символи в кожній групі

rwx rwx r-x

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

  • якщо є символ, то це 1;

  • якщо є мінус (або пропуск), то це 0.

Тепер комбінація прав доступу буде виглядати наступним чином

111 111 101

І накінець, переведемо цей запис із двійкового вигляду у вісімкову систему числення

7 7 5

У записі 775 кожна цифра позначає певну групу:

  • перша цифра - права для власника;

  • друга цифра - права для групи;

  • третя цифра - права для усіх інших.

Для легкого запам’ятовування прав доступу у числовому представленні використовуйте такі позначення: r - це 4, w - це 2, x - це 1. Відсутніть прав (-) позначається 0.

Використовуючи вищезгадане правило, перетворимо символьне представлення прав доступу (rwxrwxr-x) на числове, виконавши звичайне додавання, наведене у таблиці.

Таблиця "Перетворення прав доступу із символьної форми в числову"
Символьний режим Додавання прав доступу Числовий режим

rwx =

4+2+1 =

= 7

rwx =

4+2+1 =

= 7

r-x =

4+0+1 =

= 5

Результати такого додавання можна тлумачити так:

7 (rwx)

читати, записувати, виконувати;

6 (rw‐)

читати, записувати;

5 (r‐x)

читати, виконувати;

4 (r‐‐)

читати;

3 (‐wx)

записувати, виконувати;

2 (‐w‐)

записувати;

1 (‐‐x)

виконувати;

0 (‐‐‐)

ніяких прав (нічого не можна робити).

Команда chmod

Для того, щоб змінити права доступу, використовують команду chmod у двох варіантах: символьному або числовому. Розглянемо обидва випадки.

Символьний режим

У випадку символьного використання визначимо наступний шаблон

chmod ПерсонаДіїПрава ім'я_файла_або_каталогу

Замість Персона необхідно використовувати сукупність або один з таких символів:

u

user(користувач, власник файла або каталогу);

g

group (група до якої належить файл або каталог);

o

other (усі інші);

a

all (усі, разом взяті - власник, група та усі інші).

Ці символи визначають суб’єкт, якому будуть встановлені, видалені чи змінені права.

Замість Дії необхідно вказувати один із символів, що позначають дію, яку можна буде виконати з правами:

+

додавання прав;

-

видалення прав.

Замість Права перераховують символи прав доступу:

r

read (читання);

w

write (запис);

x

eXecute (виконання).

Порядок слідування прав доступу має бути обов’язково таким: rwx. Приклади використання: rwx, wx, rx, r, w, x.

Замість ім’я_файла_або_каталогу вказується шлях до файла або каталогу.

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

chmod -R ПерсонаДіїПрава ім'я_каталогу

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

sudo chmod ПерсонаДіїПрава ім'я_файла_або_каталогу

Розглянемо кілька прикладів зміни прав доступу у символьному режимі.

Додамо (а потім видалимо) права для групи на зміну файла new_file.txt

teacher@teacher-VirtualBox:~/terminal_work$ ls -l new_file.txt
-rw-r--r-- 1 teacher teacher 10 тра 17 22:54 new_file.txt (1)
teacher@teacher-VirtualBox:~/terminal_work$ chmod g+w new_file.txt (2)
teacher@teacher-VirtualBox:~/terminal_work$ ls -l new_file.txt
-rw-rw-r-- 1 teacher teacher 10 тра 17 22:54 new_file.txt (3)
teacher@teacher-VirtualBox:~/terminal_work$ chmod g-w new_file.txt (4)
teacher@teacher-VirtualBox:~/terminal_work$ ls -l new_file.txt
-rw-r--r-- 1 teacher teacher 10 тра 17 22:54 new_file.txt (5)
  1. Спочатку для групи виставлені права лише на читання (r--) файла new_file.txt.

  2. Додаємо для групи права на зміну файла new_file.txt за допомогою команди chmod g+w new_file.txt.

  3. Група може читати і змінювати файл new_file.txt (для групи тепер права rw-).

  4. Видаляємо для групи права на зміну файла new_file.txt за допомогою команди chmod g-w new_file.txt.

  5. Для групи знову виставлені права лише на читання (r--) файла new_file.txt.

Видалимо права на читання для групи і усіх інших користувачів для файла new_file.txt

teacher@teacher-VirtualBox:~/terminal_work$ ls -l new_file.txt
-rw-r--r-- 1 teacher teacher 10 тра 17 22:54 new_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ chmod go-r new_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls -l new_file.txt
-rw------- 1 teacher teacher 10 тра 17 22:54 new_file.txt

Додамо для групи права на читання і зміну для файла new_file.txt

teacher@teacher-VirtualBox:~/terminal_work$ ls -l new_file.txt
-rw------- 1 teacher teacher 10 тра 17 22:54 new_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ chmod g+rw new_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls -l new_file.txt
-rw-rw---- 1 teacher teacher 10 тра 17 22:54 new_file.txt

Змінимо права на файли і каталоги всередині каталогу python_files. Спочатку, для вмісту каталогу python_files маємо таку картину з правами доступу

teacher@teacher-VirtualBox:~/terminal_work$ ls -l ./python_files/
загалом 28
-rwxrwx--- 1 teacher teacher 1418 сер  5  2017 basketball_teams.py
-rwxrwx--- 1 teacher teacher 1492 сер  5  2017 cities_facts.py
-rwxrwx--- 1 teacher teacher  493 тра 17 22:46 quest.py
-rw-r--r-- 1 teacher teacher   74 тра 19 12:00 result_cat.txt
-rw-r--r-- 1 teacher teacher   37 тра 19 11:33 Test_module.txt
-rw-r--r-- 1 teacher teacher   74 тра 19 11:55 test_other.txt
-rw-r--r-- 1 teacher teacher   37 тра 19 11:33 test.txt

Для прикладу, рекурсивно додамо права для інших користувачів і груп на зміну та виконання

teacher@teacher-VirtualBox:~/terminal_work$ chmod -R o+wx ./python_files/
teacher@teacher-VirtualBox:~/terminal_work$ ls -l ./python_files/
загалом 28
-rwxrwx-wx 1 teacher teacher 1418 сер  5  2017 basketball_teams.py
-rwxrwx-wx 1 teacher teacher 1492 сер  5  2017 cities_facts.py
-rwxrwx-wx 1 teacher teacher  493 тра 17 22:46 quest.py
-rw-r--rwx 1 teacher teacher   74 тра 19 12:00 result_cat.txt
-rw-r--rwx 1 teacher teacher   37 тра 19 11:33 Test_module.txt
-rw-r--rwx 1 teacher teacher   74 тра 19 11:55 test_other.txt
-rw-r--rwx 1 teacher teacher   37 тра 19 11:33 test.txt
Числовий режим

Розглянемо приклад використання числової форми запису зміни прав доступу.

Встановимо для файла new_file.txt, який зараз має права на читання і зміну лише для власника і групи (rw-rw---- або 660), права на читання, зміну і виконання для усіх інших користувачів (rw-rw-rwx або 667)

teacher@teacher-VirtualBox:~/terminal_work$ ls -l new_file.txt
-rw-rw---- 1 teacher teacher 10 тра 17 22:54 new_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ chmod 667 new_file.txt
teacher@teacher-VirtualBox:~/terminal_work$ ls -l new_file.txt
-rw-rw-rwx 1 teacher teacher 10 тра 17 22:54 new_file.txt
Таблиця "Деякі позначення прав доступу"
Символьний режим Числовий режим Значення

r--------

400

власник має право читання; ніхто інший не має права виконувати жодних дій

rw-r--r--

644

усі користувачі мають право читання; власник може редагувати

rw-rw----

660

власник і група можуть читати і редагувати, решта не мають права виконувати жодних дій

rw-rw-r--

664

усі користувачі мають право читання; власник і група можуть редагувати

rw-rw-rw-

666

усі користувачі можуть читати і редагувати

rwx------

700

власник може читати, записувати і запускати на виконання; ніхто інший не має права виконувати жодних дій

rwxr--r--

744

кожен користувач може читати, власник має право редагувати та запускати на виконання

rwxr-xr-x

755

кожен користувач має право читати і запускати на виконання; власник може редагувати

rwxrwxrwx

777

кожен користувач може читати, редагувати та запускати на виконання

4.8.7. Зміна власника і групи: команда chown

Для зміни власника і групи файла або каталогу використовується команда chown. Застосуємо наступний шаблон виконання даної команди

sudo chown ім'я_нового_власника:ім'я_нової_групи ім'я_файла_або_каталогу

Якщо необхідно змінити лише групу, то шаблон буде таким

sudo chown :ім'я_нової_групи ім'я_файла_або_каталогу

Якщо необхідно змінити лише власника, то шаблон буде таким

sudo chown ім'я_нового_власника ім'я_файла_або_каталогу

Для рекурсивної зміни власника і групи файла або каталогу у шаблон необхідно додати параметр -R

sudo chown -R ім'я_нового_власника:ім'я_нової_групи ім'я_файла_або_каталогу

При зміні власників і груп файлів та каталогів корисно дізнатися:

  1. Ім’я поточного користувача за допомогою команди whoami

teacher@teacher-VirtualBox:~/terminal_work$ whoami
teacher
  1. У які групи входить поточний користувач, використовучюи команду groups

teacher@teacher-VirtualBox:~/terminal_work$ groups teacher
teacher : teacher adm cdrom sudo dip plugdev lpadmin sambashare epoptes
  1. Список користувачів у системі, використовуючи існтрукцію cat /etc/passwd

teacher@teacher-VirtualBox:~/terminal_work$ cat /etc/passwd
...
teacher:x:1000:1000:Teacher,,,:/home/teacher:/bin/bash
...
student:x:1001:1001:Учень,,,:/home/student:/bin/bash
...

Для прикладу, змінимо поточного власника (teacher) файла pset7.sql на нового (student)

teacher@teacher-VirtualBox:~/terminal_work$ ls -l pset7.sql
-rwxrwx--- 1 teacher teacher 1178 лип  8  2016 pset7.sql
teacher@teacher-VirtualBox:~/terminal_work$ sudo chown student pset7.sql
[sudo] пароль до teacher:
teacher@teacher-VirtualBox:~/terminal_work$ ls -l pset7.sql
-rwxrwx--- 1 student teacher 1178 лип  8  2016 pset7.sql

Аналогічно, можна змінити поточну групу (у даному випадку teacher) для файла pset7.sql на нову (наприклад, plugdev)

teacher@teacher-VirtualBox:~/terminal_work$ ls -l pset7.sql
-rwxrwx--- 1 student teacher 1178 лип  8  2016 pset7.sql
teacher@teacher-VirtualBox:~/terminal_work$ sudo chown :plugdev pset7.sql
teacher@teacher-VirtualBox:~/terminal_work$ ls -l pset7.sql
-rwxrwx--- 1 student plugdev 1178 лип  8  2016 pset7.sql

4.8.8. Пошук файлів і каталогів

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

Команда find

В загальному випадку команда find виглядає наступним чином

find шлях параметри критерії шаблон

де

шлях

це шлях до каталогу, в якому виконується пошук (можна вказувати кілька каталогів);

параметри

додаткові параметри (глибина пошуку, пошук лише файлів тощо);

критерії

за яким критерієм відбуватиметься пошук (за ім’ям, за датою створення тощо);

шаблон

пошук за певним шаблоном, який формується завдяки символам і ?.

Символ позначає будь-яку кількість будь-яких символів. Символ ? позначає один будь-який символ.

В якості шляху для пошуку можна вказувати шлях до каталогу або використовувати спеціальні значення (точка, прямий слеш, тильда):

.

пошук в поточному каталозі;

/

пошук від кореневого каталогу;

~

пошук в домашньому каталозі.

Ось кілька параметрів, які є корисними при пошуку:

-maxdepth

максимальна глибина пошуку по каталогам (для пошуку в поточному каталозі необхідно вказати 1);

-print

виведення повних імен файлів і каталогів;

-type f

пошук лише файлів;

-type d

пошук лише каталогів.

Серед поширених критеріїв можна виокремити такі:

-name

пошук файлів і каталогів по імені, використовуючи шаблон;

-iname

пошук файлів і каталогів по імені, використовуючи шаблон (не враховуючи регістр літер у назві);

-user

пошук файлів і каталогів, що належать зазначеному користувачу;

-group

пошук файлів і каталогів, що належать зазначеній групі користувачів;

-size -n +n n

пошук файлів і каталогів з розміром менше (-), більше (+) або рівному n одиниць;

-mtime -n +n

пошук файлів і каталогів, створених або модифікованих менше ніж (-) або більше ніж (+) n днів тому;

-perm

пошук файлів і каталогів за правами доступу.

Наведемо кілька прикладів пошуку файлів і каталогів за допомогою команди find у каталозі terminal_work.

Для пошуку (показу) усіх файлів і каталогів у поточному каталозі необхідно виконати у терміналі команду

teacher@teacher-VirtualBox:~/terminal_work$ find .
.
./Epilogue.mp3
./images
./images/animals
./images/animals/dog.jpg
./images/animals/giraffe.jpg
./images/animals/gepard.jpg
./images/screenshots
./images/screenshots/usb.png
./images/screenshots/multiboot.png
./images/screenshots/etcher.png
./python_files
./python_files/cities_facts.py
./python_files/quest.py
./python_files/basketball_teams.py
./python_files/test.txt
./python_files/Test_module.txt
./new_file.txt
./pset7.sql
./Jamala - 1944 (Official Music Video).mp4
./other_file.txt
./ls_help.txt
./Music
./Music/NewAge
./Music/NewAge/Epilogue.mp3
./Тестова програма.mp4

Аналогічний результат буде отриманий з використанням такої інструкції

find . -print

Для пошуку усіх файлів і каталогів у певному каталозі (наприклад, у каталозі images) необхідно виконати такі команди

teacher@teacher-VirtualBox:~/terminal_work$ find ./images
./images
./images/animals
./images/animals/dog.jpg
./images/animals/giraffe.jpg
./images/animals/gepard.jpg
./images/screenshots
./images/screenshots/usb.png
./images/screenshots/multiboot.png
./images/screenshots/etcher.png

Щоб здійснити пошук лише файлів, слід використовувати параметр -type з ключем f (для пошуку лише каталогів використовується параметр -type з ключем d), як показано на прикладі

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f -print
./images/animals/dog.jpg
./images/animals/giraffe.jpg
./images/animals/gepard.jpg
./images/screenshots/usb.png
./images/screenshots/multiboot.png
./images/screenshots/etcher.png
teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type d -print
./images
./images/animals
./images/screenshots

Для пошуку файлів за назвою у певному каталозі і за вказаним шаблоном (шаблон ∗.jpg, вказаний у лапках, означає знайти усі файли, що закінчуються на .jpg) необхідно виконати команду

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f -name "*.jpg"
./images/animals/dog.jpg
./images/animals/giraffe.jpg
./images/animals/gepard.jpg

Наступна команда виведе у вікно термінала список файлів і каталогів, які починаються на певний символ (наприклад, літеру d - у каталозі images присутній лише файл dog.jpg з такими властивостями)

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -name "d*"
./images/animals/dog.jpg

Якщо необхідно знайти файли, що починаються з певних літер (наприклад, від a до f), то тут буде зручно застосувати синтаксис регулярних виразів

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f -name "[a-f]*.png"
./images/screenshots/etcher.png

Дана команда дозволить відшукати усі файли, які закінчуються на .png і починаються з літер від a до f, у каталозі images.

Якщо необхідно не враховувати регістр при пошуку за ім’ям, то використовують критерій -iname. Наприклад, у випадку пошуку файлів і каталогів без врахування регістру літер у назві необхідно використати такий синтаксис

teacher@teacher-VirtualBox:~/terminal_work$ find ./python_files -iname "test*"
./python_files/test.txt
./python_files/Test_module.txt
teacher@teacher-VirtualBox:~/terminal_work$ find ./python_files -name "test*"
./python_files/test.txt

Коли ж необхідно знайти файли або каталоги лише в поточному каталозі або у каталозі з певним рівнем вкладеності (1, 2 чи іншим), то використовують параметр -maxdepth. У випадку пошуку файлів з рівнями вкладеності необхідно виконати команди

teacher@teacher-VirtualBox:~/terminal_work$ find . -maxdepth 1 -type f -name "*.txt"
./new_file.txt
./other_file.txt
./ls_help.txt
teacher@teacher-VirtualBox:~/terminal_work$ find . -maxdepth 2 -type f -name "*.txt"
./python_files/test.txt
./python_files/Test_module.txt
./new_file.txt
./other_file.txt
./ls_help.txt

Зокрема, можна шукати файли або каталоги, які не відповідають певному шаблону, використовуючи логічний оператор заперечення -not. Наприклад, спочатку знайдемо усі файли у каталозі python_files

teacher@teacher-VirtualBox:~/terminal_work$ find ./python_files -type f
./python_files/cities_facts.py
./python_files/quest.py
./python_files/basketball_teams.py
./python_files/test.txt
./python_files/Test_module.txt

а потім здійснимо пошук лише файлів, які не закінчуються на *.txt

teacher@teacher-VirtualBox:~/terminal_work$ find ./python_files -type f -not -name "*.txt"
./python_files/cities_facts.py
./python_files/quest.py
./python_files/basketball_teams.py

Якщо необхідно видалити знайдені файли (у даному випадку, із закінченням *.py) використовують опцію -delete

find ./python_files -type f -name "*.py" -delete

Для пошуку порожніх файлів або каталогів використовують опцію -empty. У випадку пошуку порожніх файлів команда матиме вигляд

find . -type f -empty

А у випадку пошуку порожніх каталогів команда буде наступною

find . -type d -empty

Для комбінування кількох критеріїв можна використовувати -o (or - логічний оператор АБО). Наприклад, необхідно знайти файли, назва яких починається на літеру c, або які закінчуються на *.txt

teacher@teacher-VirtualBox:~/terminal_work$ find ./python_files -type f -name "c*" -o -name "*.txt"
./python_files/cities_facts.py
./python_files/test.txt
./python_files/Test_module.txt

Пошук файлів або каталогів можна здійснювати за правами доступу до них. Наприклад, знайдемо файли, що мають права доступу 664 (перша цифра 6 - це у двійковому вигляді 110, а це означає, що власник такого файла має право як читати, так і редагувати файл; друга цифра 6 - аналогічно для членів групи-власника; 4 у двійковому вигляді виглядає як 010, що дає іншим користувачам права тільки для читання)

teacher@teacher-VirtualBox:~/terminal_work$ find . -type f -perm 664
./images/animals/giraffe.jpg
./images/animals/gepard.jpg

Окрім того, можна здійснити пошук файлів тільки для читання для поточного користувача

find /etc -maxdepth 1 -type f -perm /u=r

або знайти лише виконувані файли для усіх інших

find /bin -maxdepth 1 -type f -perm /a=x

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

find . -user teacher

Щоб знайти файли і каталоги, що належать групі, наприклад, з назвою teacher, необхідно виконати команду

find . -group teacher

Пошук файлів і каталогів за датою в Linux здійснюється за допомогою критерія -mtime. Наприклад, якщо необхідно знайти усі файли і каталоги, які були модифіковані за останні 3 дні

find . -mtime -3

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

find . -mtime +7

Пошук файлів і каталогів в Linux, які були змінені протягом останніх 120 хвилин, можна здійснити за допомогою команди

find . -mmin -120

Важливим аспектом пошуку є пошук файлів або каталогів за розміром.

Позначення одиниць вимірювання, які можна використовувати у пошуку за розміром, є такими: k - кілобайти, M - мегабайти, G - гігабайти, b - байти.

Для прикладу, у каталозі images містяться три графічні файли

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f -name "*.jpg"
./images/animals/dog.jpg
./images/animals/giraffe.jpg
./images/animals/gepard.jpg

з такими розмірами: dog.jpg (359,3 кБ), gepard.jpg (69,9 кБ), giraffe.jpg (112,3 кБ).

Файли, які більші розміром за 200 кілобайт можна знайти командою

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f -name "*.jpg" -size +200k
./images/animals/dog.jpg

а файли, розмір яких знаходиться у межах від 50 кілобайт до 350 кілобайт, можна знайти за допомогою такої команди

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f -name "*.jpg" -size +50k -size -350k
./images/animals/giraffe.jpg
./images/animals/gepard.jpg

Якщо необхідно знайдені файли відсортувати за зростанням (за алфавітом) використовують наступний синтаксис

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f | sort
./images/animals/dog.jpg
./images/animals/gepard.jpg
./images/animals/giraffe.jpg
./images/screenshots/etcher.png
./images/screenshots/multiboot.png
./images/screenshots/usb.png

У випадку сортування за спаданням отримаємо такий результат

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f | sort -r
./images/screenshots/usb.png
./images/screenshots/multiboot.png
./images/screenshots/etcher.png
./images/animals/giraffe.jpg
./images/animals/gepard.jpg
./images/animals/dog.jpg

У розглянутих конструкціях сортування за назвами використовувались:

sort

команда для сортування;

-r

опція команди sort для сортування у зворотному порядку.

Над знайденими файлами можна виконувати довільні команди. Для цього використовується опція -exec. Наприклад, виставимо права доступу 777 (rwxrwxrwx) - будь-який користувач може читати, редагувати та запускати на виконання - на каталог python_files.

Спочатку переглянемо властивості даного каталогу

teacher@teacher-VirtualBox:~/terminal_work$ ls -l
...
drwxr-xr-x 2 teacher teacher     4096 тра 17 22:46  python_files
...

Зараз каталог python_files має права доступу 755 (rwxr-xr-x) - будь-який користувач має право читати і запускати на виконання, лише власник може редагувати. Для зазначеної зміни прав доступу необхідно виконати команду

teacher@teacher-VirtualBox:~/terminal_work$ find ./python_files -type d -exec chmod 777 {} \;

Можна пересвідчитись, що права доступу для каталогу python_files змінились

teacher@teacher-VirtualBox:~/terminal_work$ ls -l
...
drwxrwxrwx 2 teacher teacher     4096 тра 17 22:46  python_files
...

Використовувати опцію -exec можна також для сортування за розміром результатів пошуку файлів. Це ілюструють наступні команди

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f -exec ls -s {} \; | sort -n
24 ./images/screenshots/etcher.png
56 ./images/screenshots/multiboot.png
72 ./images/animals/gepard.jpg
76 ./images/screenshots/usb.png
112 ./images/animals/giraffe.jpg
352 ./images/animals/dog.jpg
teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f -exec ls -s {} \; | sort -n -r
352 ./images/animals/dog.jpg
112 ./images/animals/giraffe.jpg
76 ./images/screenshots/usb.png
72 ./images/animals/gepard.jpg
56 ./images/screenshots/multiboot.png
24 ./images/screenshots/etcher.png

Виведені числа - це значення розміру файлів у кілобайтах. При цьому виконувались такі команди:

ls

команда, яка виводить список файлів або каталогів (з опцією -s одночасно показує розмір файлів);

sort

команда для сортування;

-n

сортування за числовими значеннями;

-r

опція команди sort для сортування у зворотному порядку.

Якщо необхідно вивести певну кількість (використовується команда head), наприклад, 2 знайдених (відсортованих) файлів використовують наступний синтаксис

teacher@teacher-VirtualBox:~/terminal_work$ find ./images -type f -exec ls -s {} \; | sort -n -r | head -2
352 ./images/animals/dog.jpg
112 ./images/animals/giraffe.jpg
Команди whereis і which

У системі встановлено багато різних програм. Щоб дізнатися розміщення бінарних файлів, вихідних кодів, що відносяться до встановленої програми, можна виконати команду whereis.

Для прикладу, знайдемо інформацію про пакунок firefox

teacher@teacher-VirtualBox:~/terminal_work$ whereis firefox
firefox: /usr/bin/firefox /usr/lib/firefox /etc/firefox /usr/share/man/man1/firefox.1.gz

Команда ж which відображає повний шлях до встановленої програми. Для нашого прикладу отримаємо такий результат

teacher@teacher-VirtualBox:~/terminal_work$ which firefox
/usr/bin/firefox

4.8.9. Перегляд вмісту і пошук у текстових файлах

Команда less

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

В загальному вигляді команда має такий синтаксис

less шлях/до/файла/ім'я_файла

Відкриємо текстовий файл In the Heart of Africa (формат Plain Text UTF-8) для перегляду у терміналі (завантажений файл був перейменований в In_the_Heart_of_Africa.txt)

less In_the_Heart_of_Africa.txt

Для керування переглядом тексту можна використовувати клавіші , , PageUp, PageDown, Home, End, а для виходу із режиму перегляду клавішу з літерою q.

Якщо необхідно переглядати текст з певного рядка, то вказують опцію + і номер рядка, з якого необхідно виконувати перегляд. Дізнаємось про автора завантаженої книги

less +11 In_the_Heart_of_Africa.txt

З використанням команди less є зручним пошук слів у тексті.

Для пошуку певного тексту треба ввести прямий слеш / і текст для пошуку. У тексті будуть виокремлені фрагменти тексту, що шукалися, а перехід між ними можна здійснити за допомогою клавіш n (перехід до наступного знайденого тексту) і N (перехід до попереднього знайденого тексту).

Окрім того, для переходу на конкретний рядок у тексті використовують наступний синтаксис: 11g - перейти на 11-й рядок.

Для того, щоб відобразити номери рядків у файлі, можна вказати опцію -N

less -N In_the_Heart_of_Africa.txt

або ввести її під час перегляду текстового файла.

Команди head і tail

За назвами вказаних команд легко здогадатися, що команда head відображає голову текстового файла, а tail - його хвіст.

Виконання команди head виведе перші 10 рядків текстового файла.

В загальному вигляді синтаксис команди head є наступним

head опції шлях/до/файла/ім'я_файла

Виведемо у вікно термінала перші 10 рядків з файла In_the_Heart_of_Africa.txt

teacher@teacher-VirtualBox:~/terminal_work$ head In_the_Heart_of_Africa.txt
The Project Gutenberg EBook of In the Heart of Africa, by Samuel White Baker

This eBook is for the use of anyone anywhere at no cost and with
almost no restrictions whatsoever.  You may copy it, give it away or
re-use it under the terms of the Project Gutenberg License included
with this eBook or online at www.gutenberg.org


Title: In the Heart of Africa

Якщо необхідно вивести на екран певну кількість рядків (замість 10-ти, за замовчуванням) з початку текстового файла, то необхідно використати опцію - і кількість рядків. Наприклад, виведемо на екран лише перший рядок з текстового файла

teacher@teacher-VirtualBox:~/terminal_work$ head -1 In_the_Heart_of_Africa.txt
The Project Gutenberg EBook of In the Heart of Africa, by Samuel White Baker

Виконання команди tail виведе останні 10 рядків файла.

У загальному вигляді синтаксис команди буде таким

tail опції шлях/до/файла/ім'я_файла

Виведемо у вікно термінала останні 10 рядків з файла In_the_Heart_of_Africa.txt

teacher@teacher-VirtualBox:~/terminal_work$ tail In_the_Heart_of_Africa.txt


Most people start at our Web site which has the main PG search facility:

     http://www.gutenberg.org

This Web site includes information about Project Gutenberg-tm,
including how to make donations to the Project Gutenberg Literary
Archive Foundation, how to help produce our new eBooks, and how to
subscribe to our email newsletter to hear about new eBooks.

Якщо необхідно вивести певну кількість рядків з кінця текстового файла, то потрібно вказати опцію (як і у випадку з head) - і кількість рядків

teacher@teacher-VirtualBox:~/terminal_work$ tail -4 In_the_Heart_of_Africa.txt
This Web site includes information about Project Gutenberg-tm,
including how to make donations to the Project Gutenberg Literary
Archive Foundation, how to help produce our new eBooks, and how to
subscribe to our email newsletter to hear about new eBooks.
Команди cat і tac

Команда cat використовується для перегляду текстового файла повністю і, в основному, для перегляду невеликих текстових файлів, наприклад, будь-яких конфігураційних файлів. У загальному вигляді команда має наступний синтаксис

cat опції шлях/до/файла/ім'я_файла

Приклади використання

teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/test.txt
текст першого файла
teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/Test_module.txt
текст другого файла

При перегляді вмісту файлів можна використовувати опцію -n для відображення номерів рядків

teacher@teacher-VirtualBox:~/terminal_work$ cat -n ./python_files/cities_facts.py
     1	# -*- coding: utf-8 -*-
     2	cities = {
     3	    'Rome': {
     4	                'country': 'Italy',
     5	                'population': 2868000,
     6	                'fact': 'Rome is one of the oldest cities in the world, the capital of Ancient Rome. Therefore, Rome is often called the "eternal city".'
     7	            },
     8	    'Canberra': {
     9	                'country': 'Australia',
    10	                'population': 381448,
...

За допомогою перенаправлення стандартного потоку виведення термінала і команди cat можна виконати ряд цікавих дій:

  1. Створити копію вказаного файла (test.txt) і зберегти її під новим ім’ям (test_other.txt)

teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/test.txt
текст першого файла
teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/test.txt > ./python_files/test_other.txt
teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/test_other.txt
текст першого файла
  1. Додати текст із одного файла (Test_module.txt) в інший (test_other.txt)

teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/Test_module.txt
текст другого файла
teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/Test_module.txt >> ./python_files/test_other.txt
teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/test_other.txt
текст першого файла
текст другого файла
  1. Об’єднати кілька файлів (test_other.txt, Test_module.txt) в один і створити його (result_cat.txt)

teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/test.txt ./python_files/Test_module.txt > ./python_files/result_cat.txt
teacher@teacher-VirtualBox:~/terminal_work$ cat ./python_files/result_cat.txt
текст першого файла
текст другого файла

Команда tac - аналогічна команді cat і має такий самий синтаксис, тільки відображає рядки у зворотному порядку

teacher@teacher-VirtualBox:~/terminal_work$ tac ./python_files/result_cat.txt
текст другого файла
текст першого файла
Команда wc

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

Кілька стандартних опцій, які має утиліта:

  • -c (--bytes) - показує кількість байтів;

  • -l (--lines) - показує кількість рядків;

  • -L (--max-line-length) - виводить довжину найбільшого рядка;

  • -m - виводить кількість символів;

  • -w (--words) - показує кількість слів у файлі;

  • --files0-from=File) - отримує імена файлів із списку, що міститься у файлі з іменем File.

Виконання команди wc без опцій має на увазі викориcтання опції: -clw. Ось простий приклад виконання команди wc

teacher@teacher-VirtualBox:~$ wc log.txt
 2  7 58 log.txt

де перша колонка - кількість рядків, друга - кількість слів, третя - кількість байтів.

4.8.10. Виконувані файли

Що таке виконуваний файл?

У Windows виконувані файли мають розширення .exe (в основному), а всередині містять набір байтів. У Linux виконуваним може бути навіть текстовий файл. Що ж таке виконуваний файл з точки зору Linux?

Фактично, це будь-який файл, який позначений, як виконуваний і який Linux зможе запустити на виконання. Це означає: у кожного файла є спеціальна властивість-перемикач, яка ніяк не залежить ні від імені, ні від вмісту, ні від розширення, і яка відповідає за виконуваність.

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

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

Насправді, магічна властивість-перемикач виконуваності є одним з трьох прав доступу.

У кожного файла є три групи прав доступу - для користувача-власника, для групи-власника і для усіх інших, кожна група складається в свою чергу з трьох прав: на читання (r), зміну (w) та виконання (x). Ці атрибути визначають, що система може робити з цим файлом. Право на виконання і є тим самим перемикачем виконуваності.

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

Створення виконуваного файла

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

Це можна зробити за допомогою термінала, скориставшись таким синтаксисом

chmod +x шлях/до/файла/ім'я_файла

Це аналогічно наступній команді

chmod ugo+x шлях/до/файла/ім'я_файла

або

chmod a+x шлях/до/файла/ім'я_файла

Для прикладу, за допомогою термінала створимо новий файл my_script.txt і зробимо його виконуваним (результатом виконання файла буде виведення на екран повідомлення It works!)

teacher@teacher-VirtualBox:~/terminal_work$ echo 'echo "It works!"' > my_script.txt (1)
teacher@teacher-VirtualBox:~/terminal_work$ cat my_script.txt (2)
echo "It works!"
teacher@teacher-VirtualBox:~/terminal_work$ ./my_script.txt (3)
bash: ./my_script.txt: Відмовлено у доступі
teacher@teacher-VirtualBox:~/terminal_work$ ls -l my_script.txt (4)
-rw-r--r-- 1 teacher teacher 17 тра 20 16:38 my_script.txt
teacher@teacher-VirtualBox:~/terminal_work$ chmod +x my_script.txt (5)
teacher@teacher-VirtualBox:~/terminal_work$ ls -l my_script.txt (6)
-rwxr-xr-x 1 teacher teacher 17 тра 20 16:38 my_script.txt
teacher@teacher-VirtualBox:~/terminal_work$ ./my_script.txt (7)
It works!

Розглянемо виконані команди і дії.

  1. Створюємо файл my_script.txt і записуємо у нього за допомогою команди echo рядок echo "It works!".

  2. Переглядаємо вміст щойно створеного файла my_script.txt на наявність записаної команди echo "It works!" для виведення повідомлення. Для перегляду вмісту файла використовується команда cat.

  3. Запускаємо файл на виконання. Символи ./ у записі запуску файла ./my_script.txt означають, що файл запускається з поточного каталогу. Так як файл не є виконуваним, командна оболонка повідомляє про відмову в доступі.

  4. Перевіряємо права доступу до файла командою ls -l (детально переглянути вміст каталогу). Дійсно, власник файла може лише читати і змінювати файл, група і усі інші користувачі лише читати. Ніхто не має прав запускати даний файл.

  5. Встановлюємо атрибут виконуваності для файла (право на запуск) для усіх за допомогою команди chmod +x my_script.txt.

  6. Ще раз перевіряємо права доступу для файла і пересвідчуємось, що права на виконання мають усі.

  7. Запускаємо знову файл на виконання командою ./my_script.txt і спостерігаємо повідомлення It works! на екрані.

Що відбувається, коли файл виконується?

Для виконання файла спочатку вводиться ім’я файла (або шлях до файла), який необхідно запустити в командному рядку і натискається клавіша Enter.

Якщо файл розташований в поточному каталозі, то для його запуску необхідно використовувати такий запис: ./назва_файла.

В першу чергу, командна оболонка перевіряє, чи має користувач права на виконання цього файла. Якщо має, тоді система дивиться, чи це виконуваний бінарний файл.

В Linux усі виконувані бінарні файли на початку файла мають заголовок ELFWindows у виконуваних файлах заголовок MZ).

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

Якщо файл не бінарний, тоді вважається, що це текстовий файл - скрипт або сценарій.

У перших двох байтах сценарію зчитується послідовність символів #!. Якщо символи #! присутні, тоді перший рядок сценарію, починаючи з третього байта, ядро Linux ​​сприйме як команду.

Виконання сценарію, що містить зазначену послідовність, призведе до запуску зазначеної після #! команди, останнім параметром якої буде ім’я самого файла сценарію.

Наприклад, для файлів, написаних на мові сценаріїв командного рядка, перший рядок буде виглядати так

#!/bin/bash
echo "Hello, Ubuntu!"

Для програм, написаних на мові Python версії 3, так

#!/usr/bin/python3
print("Hello, Python!")
У всіх інтерпретованих мовах програмування # - це символ коментаря. Тобто рядок у скрипті, що починається з коментаря, програмою не виконується.

Якщо у файлі в першому рядку немає символів #!, тоді все залежить від програми командної оболонки, в якій запускається програма. Якщо використовується bash, то облонка вважає, що файл містить програму, написану на мові сценаріїв командного рядка, запускає копію себе і передає цій копії файл на інтерпретацію (так відбулося у нашому випадку з файлом my_script.txt).

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

Ви можете зробити файл виконуваним в Linux не лише через термінал. Така функціональність є у всіх файлових менеджерах, зокрема в Nautilus, який є вбудованим в Ubuntu.

Натисніть правою кнопкою миші на ваш файл програми або скрипта, щоб відкрити контекстне меню, потім виберіть Властивості (Ctrl+I), далі вкладку Права і поставте позначку Дозволити виконання файла як програми

Виконання файлів як програм в Ubuntu
Виконання файлів як програм в Ubuntu

Крім того, виконувані файли можна запускати прямо з файлового менеджера подвійним кліком, але для цього необхідно встановити відповідний параметр в налаштуваннях Nautilus. А саме, необхідно перейти по шляху Файли  Параметри  Поведінка  Виконувати текстові файли і позначити пункт Перепитувати, що робити

Виконання текстових файлів як програм в Ubuntu
Виконання текстових файлів як програм в Ubuntu

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

Виконання чи перегляд вмісту виконуваних текстових файлів в Ubuntu
Виконання чи перегляд вмісту виконуваних текстових файлів в Ubuntu
Запуск скриптів

Характерним прикладом незвичайних, на перший погляд, виконуваних файлів Linux є скрипти.

Скрипти - це звичайні текстові файли (відрізняються від інших текстових файлів за розширенням .sh, py та іншими), що містять набір інструкцій для програми-інтерпретатора.

Якщо для них встановлено атрибут виконуваності (x), то для їх відкриття використовується спеціальна програма-інтерпретатор (наприклад, командна оболонка bash). Далі інтерпретатор читає послідовно рядок за рядком і виконує всі команди, які містяться у файлі.

Є кілька способів виконати запуск скрипта у Linux. Його можна запустити, як будь-яку іншу програму, через термінал або ж запустити оболонку і повідомити їй, який файл потрібно виконувати. В цьому випадку не потрібно навіть атрибута виконуваності.

Розглянемо приклад скрипта helloubuntu.sh, який містить такий код

#!/bin/bash
echo "Hello, Ubuntu!"

Перший рядок - це командна оболонка, за допомогою якої виконується другий рядок - виведення повідомлення Hello, Ubuntu! на екран.

Командна оболонка може бути не лише /bin/bash, але і /bin/sh, /usr/bin/python3 та іншою.

Щоб отримати шлях до виконуваного файла командної оболонки у терміналі використовують команду whereis з назвою оболонки, наприклад, whereis bash.

Щоб виконати скрипт в зазначеній оболонці, потрібно встановити для нього права на виконання (дозволимо виконувати запуск файла helloubuntu.sh усім категоріям користувачів - власнику, групі файла та іншим). Виконання усіх дій у терміналі може бути таким

teacher@teacher-VirtualBox:~/terminal_work$ ls -l helloubuntu.sh
-rw-r--r-- 1 teacher teacher 34 тра 20 18:08 helloubuntu.sh
teacher@teacher-VirtualBox:~/terminal_work$ ./helloubuntu.sh
bash: ./helloubuntu.sh: Відмовлено у доступі
teacher@teacher-VirtualBox:~/terminal_work$ chmod ugo+x helloubuntu.sh
teacher@teacher-VirtualBox:~/terminal_work$ ls -l helloubuntu.sh
-rwxr-xr-x 1 teacher teacher 34 тра 20 18:08 helloubuntu.sh
teacher@teacher-VirtualBox:~/terminal_work$ ./helloubuntu.sh
Hello, Ubuntu!

Розглянемо кілька важливих моментів щодо запуску скриптів.

При запуску скриптів важливим моментом є місце, де знаходиться скрипт. Якщо просто ввести helloubuntu.sh то пошук буде виконаний тільки глобально, в каталогах, які записані у змінну $PATH і, навіть, якщо ви перебуваєте зараз в тому каталозі, де знаходиться скрипт, то він не буде знайдений.

У Linux $PATH - це змінна середовища, яка використовується для вказівки командній оболонці, де шукати виконувані файли. Програми/скрипти, розташовані в каталозі $PATH, можуть бути виконані безпосередньо у вашій командній оболонці без вказівки повного шляху до них.

Для перегляду значень змінної $PATH виконайте у терміналі команду: echo $PATH.

Також, до назви скрипта необхідно додавати повний шлях, наприклад, для того ж поточного каталогу (./)

./helloubuntu.sh

або повний шлях від кореня домашнього каталогу

teacher@teacher-VirtualBox:~$ /home/teacher/terminal_work/helloubuntu.sh
Hello, Ubuntu!

Якщо не хочеться вказувати повний шлях до скрипта, досить перемістити скрипт в один із каталогів, які вказані у змінній $PATH. Один з них, що призначений для ручного встановлення програм, - /usr/local/bin.

teacher@teacher-VirtualBox:~$ sudo cp /home/teacher/terminal_work/helloubuntu.sh /usr/local/bin
teacher@teacher-VirtualBox:~$ ls -l /usr/local/bin
загалом 4
-rwxr-xr-x 1 root root 34 тра 20 18:54 helloubuntu.sh
teacher@teacher-VirtualBox:~$ helloubuntu.sh
Hello, Ubuntu!

Файл скрипта helloubuntu.sh був скопійований за допомогою команди cp з каталогу /home/teacher/terminal_work/, де він спочатку знаходиться, у каталог /usr/local/bin. Тепер запуск скрипта helloubuntu.sh не потребує вказівки повного шляху до нього.

Інший спосіб запуску скриптів є запуск спочатку командної оболонки (bash, sh), а потім передавання їй скрипта

teacher@teacher-VirtualBox:~/terminal_work$ bash helloubuntu.sh
Hello, Ubuntu!
Файл-посилання - це особливий тип файла, який, по суті, вказує на інший файл або місце розташування у файловій системі комп’ютера. Такі файли часто використовують для більш легкого доступу до файлів.

У Linux існує два види файлів-посилань: жорсткі та символьні.

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

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

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

Основні властивості символьних посилань:

  • можуть посилатися на файли і каталоги;

  • після видалення, переміщення або перейменування файла стають недійсними;

  • права доступу і номер inode відрізняються від вихідного файла;

  • права доступу для символьних посилань значення не мають (права доступу завжди rwxrwxrwx);

  • при зміні прав доступу для вихідного файла, права на посилання залишаться незмінними;

  • можна посилатися на інші розділи диска;

  • містять тільки ім’я файла, а не його вміст.

Жорстке посилання також дозволяє швидко отримати доступ до ресурсу з іншого місця або під іншим ім’ям. Жорсткі посилання - це інша назва того самого файла. Це дозволяє мати один і той же файл у декількох місцях.

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

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

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

Розглянемо деякі властивості жорстких посилань:

  • працюють тільки в межах однієї файлової системи (причина проста: лічильник посилання зберігається у самому inode, а останній не може спільно використовуватися у різних файлових системах);

  • не можна посилатися на каталоги, лише на файли;

  • мають ту ж інформацію inode і набір дозволів, що і у вихідного файла;

  • дозволи на посилання змінюються при зміні дозволів файла;

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

Відмінності між символьними і жорсткими посиланнями

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

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

Для створення символьних посилань існує утиліта ln, яка має наступний синтаксис

ln опції файл_вихідний файл_посилання

Опції можуть мати такі значення:

-s

створення символьного посилання;

-r

створення символьного посилання з відносним шляхом до файла;

-P

створення жорсткого посилання;

-f

видалення існуючих посилань;

-i

запитати чи видаляти вже існуючі посилання з таким ім’ям.

Для початку, створимо каталог testlinks і перейдемо у нього

teacher@teacher-VirtualBox:~/terminal_work$ mkdir testlinks && cd testlinks

Тепер створимо вихідний файл з ім’ям source, який буде містити текст symbolic links, і переглянемо вміст цього файла, використовуючи команду cat

teacher@teacher-VirtualBox:~/terminal_work/testlinks$ echo "symbolic links" > source
teacher@teacher-VirtualBox:~/terminal_work/testlinks$ cat source
symbolic links

Вихідний файл готовий. Далі створимо символьне посилання на файл source за допомогою команди ln з опцією -s і переглянемо вміст файла за цим символьним посиланням командою cat

teacher@teacher-VirtualBox:~/terminal_work/testlinks$ ln -s source softlink
teacher@teacher-VirtualBox:~/terminal_work/testlinks$ cat softlink
symbolic links

Як бачимо, вміст у файлі-посиланні і вихідному (оригінальному) файлі однаковий.

При створенні символьних посилань, імена файлів можуть бути як абсолютними, так і відносними.

Але використовуючи утиліту ls, можна побачити, що вказані файли мають відмінності

teacher@teacher-VirtualBox:~/terminal_work/testlinks$ ls -li
загалом 4
1700690 lrwxrwxrwx 1 teacher teacher  6 тра 27 15:44 softlink -> source
1700689 -rw-r--r-- 1 teacher teacher 15 тра 27 15:40 source

Незважаючи на те, що вміст однаковий, тут ми бачимо, що адреса inode (у першій колонці) і права доступу до файлів (у другій колонці) відрізняються, крім того, явно показано, що softlink - це символьне посилання Linux на вихідний файл source (можна легко ідентифікувати символьне посилання по маленькій літері l на початку рядка з правами доступу).

Тепер видалимо вихідний файл source командою rm і переглянемо вміст файла-посилання softlink

teacher@teacher-VirtualBox:~/terminal_work/testlinks$ rm source
teacher@teacher-VirtualBox:~/terminal_work/testlinks$ cat softlink
cat: softlink: Немає такого файла або каталогу # символьне посилання не працює, оскільки вихідний файл був видалений
teacher@teacher-VirtualBox:~/terminal_work/testlinks$ ls
softlink # символьне посилання залишилося після видалення оригінального файла

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

Розглянемо особливості процесу створення жорстких посилань. Знову створимо вихідний файл source, але вже з текстом hard links

teacher@teacher-VirtualBox:~/terminal_work/testlinks$ echo "hard links" > source
teacher@teacher-VirtualBox:~/terminal_work/testlinks$ cat source
hard links

Створимо жорстке посилання hardlink на файл source, викликавши утиліту ln без параметрів, і переглянемо вміст файла-посилання hardlink

teacher@teacher-VirtualBox:~/terminal_work/testlinks$ ln source hardlink
teacher@teacher-VirtualBox:~/terminal_work/testlinks$ cat hardlink
hard links

Вміст файлів (вихідного і жорсткого посилання) однаковий. Якщо переглянути інформацію про ці файли за допомогою утиліти ls, то побачимо, що inode і права доступу також співпадають

teacher@teacher-VirtualBox:~/terminal_work/testlinks$ ls -li
загалом 8
1700689 -rw-r--r-- 2 teacher teacher 11 тра 27 16:04 hardlink
1700689 -rw-r--r-- 2 teacher teacher 11 тра 27 16:04 source

Зверніть увагу на номер в третій колонці - цифру 2, яка означає, що є два екземпляри вихідного файла. Тобто, вихідний файл source, так і жорстке посилання на нього hardlink, мають номер 2 у списку, тому що кожен з них є посиланням чи екземпляром того ж файла. Якщо додати нове жорстке посилання на оригінальний файл, тоді цифра збільшиться ще на 1 пункт, і буде показувати цифру 3.

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

Видалимо вихідний файл source і переглянемо вміст файла-посилання hardlink

teacher@teacher-VirtualBox:~/terminal_work/testlinks$ rm source
teacher@teacher-VirtualBox:~/terminal_work/testlinks$ cat hardlink
hard links

Як бачимо, нічого не сталося і жорстке посилання, як і раніше, вказує на потрібну ділянку диска. Це головна відмінність жорсткого посилання від символьного.

4.8.12. Файли-архіви

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

Архівування в Linux це не одне і те ж, що і стиснення файлів Linux.

Архівування - це об’єднання декількох файлів в один, з метою більш зручної подальшої їх передачі, зберігання, шифрування або стиснення. Стиснення - це процес зменшення розміру файлів або каталогів.
Для відкриття, редагування і створення архівів у Linux можна користуватися додатком Менеджер архівів, який вже вбудований у систему. Він має зрозумілий графічний інтерефейс, тому при роботі з ним не повинно виникати труднощів. Далі розглядається робота з архівами за допомогою термінала.
tar

tar - найбільш поширений архіватор, який використовується в Linux-системах. Сам по собі tar не є архіватором в звичному розумінні цього слова, тому що він самостійно не використовує стиснення.

Для стиснення використовуються багато інших програм, в залежності від алгоритму стиснення, наприклад, zip, gz, xz і т.д.

Отже, tar створює нестиснений архів, у який поміщаються вибрані файли і каталоги, при цьому зберігаючи деякі їх атрибути (такі як права доступу). Після цього отриманий файл .tar стискається архіватором, наприклад, gzip або bzip2. Ось чому архіви зазвичай мають розширення .tar.gz або .tar.bz2 (для архіваторів gzip і bzip2 відповідно).

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

Розглянемо синтаксис команди tar. У загальному випадку команда tar має вигляд

tar опції параметри назва_архіву.tar /шлях/до/файлів_для_архівації

а при розпакування архіву

tar опції параметри назва_архіву.tar

Значення деяких опцій, які визначають режим роботи команди tar, наведені у таблиці.

Таблиця "Опції команди tar"
Опція Опція (довгий запис) Опис

-c

--create

створити новий архів

-r

--append

приєднати файли в кінець архіву

-t

--list

сформувати список вмісту архіву

-u

--update

оновити архів більш новими файлами з тим самим іменем

-x

--extract

видобути файли із архіву

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

Таблиця "Параметри команди tar"
Параметр Параметр (довгий запис) Опис

-C

--directory=каталог

змінити каталог перед виконанням певної дії

-f

--file

записати результат архівації у файл

-j

--bzip2

перенаправити виведення результату архівації в команду bzip2 (стиснення)

-p

--same-permissions

зберегти усі права доступу

-v

--verbose

вивести детальну інформацію під час процесу архівації

--totals

вивести підсумкову інформацію після завершення процесу архівації

-z

--gzip

перенаправити виведення результату архівації в команду gzip (стиснення)

Розглянемо створення архівів за допомогою команди tar. Для цього використаємо для експериментів каталог testarchives з наступними файлами

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls -li
загалом 12
1700701 -rwxrwx--- 1 teacher teacher 1418 сер  5  2017 basketball_teams.py
1700707 -rwxrwx--- 1 teacher teacher 1492 сер  5  2017 cities_facts.py
1700708 -rwxrwx--- 1 teacher teacher  491 сер  5  2017 quest.py

Створимо файл-архів з назвою py_files, який буде містити три файли basketball_teams.py, cities_facts.py, quest.py, з детальним виведенням інформації про архівацію

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ tar --create --totals --verbose --file py_files.tar basketball_teams.py cities_facts.py quest.py
basketball_teams.py
cities_facts.py
quest.py
Записано загалом: 10240 (10KiB, 15MiB/s)

Використаємо скорочений запис для архівації файлів і переглянемо чи був створений архів py_files.tar

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ tar --totals -cvf py_files.tar basketball_teams.py cities_facts.py quest.py
basketball_teams.py
cities_facts.py
quest.py
Записано загалом: 10240 (10KiB, 15MiB/s)
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls
basketball_teams.py  cities_facts.py  py_files.tar  quest.py

Для перегляду архівів, не розпаковуючи їх, використовують запис команди tar у такому вигляді

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ tar -tf py_files.tar
basketball_teams.py
cities_facts.py
quest.py

Для розпакування (видобування) архіву із виведенням назв файлів архіву на екран необхідно виконати команду

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls
py_files.tar
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ tar -xvf py_files.tar
basketball_teams.py
cities_facts.py
quest.py
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls
basketball_teams.py  cities_facts.py  py_files.tar  quest.py

Щоб виконати розпакування в інший каталог, використовують параметр -C. Створимо каталог other_files всередині testarchives і скористаємось командою tar

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls
py_files.tar
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ mkdir other_files
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls
other_files  py_files.tar
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls other_files/
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ tar -xvf py_files.tar -C "other_files"
basketball_teams.py
cities_facts.py
quest.py
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls other_files/
basketball_teams.py  cities_facts.py  quest.py

Як вже було сказано, tar тільки створює архів, але не стискає. Для цього використовуються згадані утиліти bzip2 і gzip. Файли, стиснуті з їх допомогою, мають відповідні закінчення назв файлів: .tar.bz2 і .tar.gz.

Щоб створити стиснений архів за допомогою bzip2, використовують параметр -j і у назві архіву додається формат .bz2

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls
basketball_teams.py  cities_facts.py  py_files.tar  quest.py
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ tar --totals -cjvf py_files_compression.tar.bz2 basketball_teams.py cities_facts.py quest.py
basketball_teams.py
cities_facts.py
quest.py
Записано загалом: 10240 (10KiB, 18MiB/s)
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls -li
загалом 28
1700728 -rwxr-x--- 1 teacher teacher  1418 сер  5  2017 basketball_teams.py
1700729 -rwxr-x--- 1 teacher teacher  1492 сер  5  2017 cities_facts.py
1700732 -rw-r--r-- 1 teacher teacher  1205 тра 28 12:25 py_files_compression.tar.bz2
1700716 -rw-r--r-- 1 teacher teacher 10240 тра 28 11:54 py_files.tar
1700730 -rwxr-x--- 1 teacher teacher   491 сер  5  2017 quest.py

Як бачимо, розмір архіву py_files.tar без стиснення має значення 10240 Байт (шоста колонка у таблиці), розмір архіву py_files_compression.tar.bz2 із стистенням має значення 1205 Байт.

Використовуючи архіватор gzip, вказується параметр -z і інше закінчення архіву .gz

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ tar --totals -czvf py_files_compression.tar.gz basketball_teams.py cities_facts.py quest.py
basketball_teams.py
cities_facts.py
quest.py
Записано загалом: 10240 (10KiB, 18MiB/s)
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls -li
загалом 32
1700728 -rwxr-x--- 1 teacher teacher  1418 сер  5  2017 basketball_teams.py
1700729 -rwxr-x--- 1 teacher teacher  1492 сер  5  2017 cities_facts.py
1700732 -rw-r--r-- 1 teacher teacher  1205 тра 28 12:25 py_files_compression.tar.bz2
1700733 -rw-r--r-- 1 teacher teacher  1159 тра 28 12:33 py_files_compression.tar.gz
1700716 -rw-r--r-- 1 teacher teacher 10240 тра 28 11:54 py_files.tar
1700730 -rwxr-x--- 1 teacher teacher   491 сер  5  2017 quest.py

Розмір архіву py_files_compression.tar.gz, стисненого за допомогою архіватора gzip складає 1159 Байт.

Варто пам’ятати, що при розпакуванні архівів, стиснутих за допомогою gzip або bzip2, необхідно вказувати відповідні параметри (-j і -z відповідно)

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ tar -xjvf py_files_compression.tar.bz2 -C "other_files"
basketball_teams.py
cities_facts.py
quest.py
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ tar -xzvf py_files_compression.tar.gz -C "other_files"
basketball_teams.py
cities_facts.py
quest.py
zip
zip - це утиліта архівування та стиснення, тому її можна використовувати для архівування, стиснення і розпаковування файлів і каталогів у Unix-подібних операційних системах. Програма встановлена за замовчуванням у дистрибутив Ubuntu.

Для перевірки роботи утиліти zip використаємо каталог testarchives, який містить три файли basketball_teams.py, cities_facts.py, quest.py і один каталог python_tasks, який, у свою чергу, містить два файли (hello.py і my_script.txt)

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls
basketball_teams.py  cities_facts.py  python_tasks  quest.py
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls python_tasks/
hello.py  my_script.txt

Щоб створити архів із трьох файлів у каталозі testarchives за допомогою утиліти zip, необхідно виконати наступну команду в терміналі (вказувати для назви файла-архіву розширення .zip необов’язково)

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ zip py_files.zip basketball_teams.py cities_facts.py quest.py
  adding: basketball_teams.py (deflated 79%)
  adding: cities_facts.py (deflated 63%)
  adding: quest.py (deflated 59%)
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls -li
загалом 20
1700728 -rwxr-x--- 1 teacher teacher 1418 сер  5  2017 basketball_teams.py
1700729 -rwxr-x--- 1 teacher teacher 1492 сер  5  2017 cities_facts.py
1700744 -rw-r--r-- 1 teacher teacher 1548 тра 28 13:49 py_files.zip
1700739 drwxr-xr-x 2 teacher teacher 4096 тра 28 13:45 python_tasks
1700730 -rwxr-x--- 1 teacher teacher  491 сер  5  2017 quest.py

Аналогічно можна створити архів вмісту каталогу python_tasks

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ zip py_tasks.zip python_tasks/
  adding: python_tasks/ (stored 0%)

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

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ zip -r py_tasks.zip python_tasks/
updating: python_tasks/ (stored 0%)
updating: python_tasks/hello.py (deflated 23%)
updating: python_tasks/my_script.txt (deflated 2%)
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls
basketball_teams.py  py_files.zip  python_tasks
cities_facts.py      py_tasks.zip  quest.py

Якщо вказати існуючий архів і перелік файлів чи каталогів, які необхідно дадати до нього, то програма zip оновить вміст існуючого архіву з доданими новими файлами або каталогами

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ zip -r py_tasks.zip python_tasks/ quest.py
updating: python_tasks/ (stored 0%)
updating: python_tasks/hello.py (deflated 23%)
updating: python_tasks/my_script.txt (deflated 2%)
  adding: quest.py (deflated 59%)

Щоб переглянути вміст zip-архіву без розпакування, слід виконати команду unzip з опцією -l

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ unzip -l py_tasks.zip
Archive:  py_tasks.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2018-05-28 13:54   python_tasks/
       44  2018-05-28 13:54   python_tasks/hello.py
       43  2018-05-20 18:03   python_tasks/my_script.txt
      491  2017-08-05 16:35   quest.py
---------                     -------
      578                     4 files

Для розпакування zip-архівів використовують команду unzip (якщо у каталозі, у який виконують розархівування, вже знаходяться файли з таким ж іменами, з’явиться діалог з вибором потрібної дії)

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ unzip py_tasks.zip
Archive:  py_tasks.zip
replace python_tasks/hello.py? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
  inflating: python_tasks/hello.py
replace python_tasks/my_script.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
  inflating: python_tasks/my_script.txt
replace quest.py? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
  inflating: quest.py

Якщо ж необхідно видобути з архіву не усі файли або каталоги, а лише визначені, то у записі команди unzip треба вказати назви цих файлів (окрім того, якщо необхідно, щоб каталог розпакування був не поточний, а інший, то ще вказується опція -d)

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls python_tasks/
hello.py  my_script.txt
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ unzip py_files.zip quest.py -d python_tasks/
Archive:  py_files.zip
  inflating: python_tasks/quest.py
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls python_tasks/
hello.py  my_script.txt  quest.py

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

Щоб створити зашифрований архів, необхідно використовувати опцію -e

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ zip -e py_files_encryption.zip basketball_teams.py cities_facts.py quest.py
Enter password:
Verify password:
  adding: basketball_teams.py (deflated 79%)
  adding: cities_facts.py (deflated 63%)
  adding: quest.py (deflated 59%)

При розпакуванні такого зашифрованого архіву необхідно буде ввести правильний пароль

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ unzip py_files_encryption.zip
Archive:  py_files_encryption.zip
[py_files_encryption.zip] basketball_teams.py password:
replace basketball_teams.py? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
  inflating: basketball_teams.py
  inflating: cities_facts.py
  inflating: quest.py

Команда zip підтримує кілька рівнів стиснення:

-0

лише архівувати (без стиснення);

-1

найшвидший (найгірше стиснення);

-9

повільний (найкраще стиснення);

-6

рівень за замовчуванням.

Наприклад, створимо архів py_tasks.zip із каталогу python_tasks і його вмісту з найвищим рівнем стиснення (9)

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls python_tasks/
hello.py  my_script.txt  quest.py
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ zip -r -9 py_tasks.zip python_tasks/
  adding: python_tasks/ (stored 0%)
  adding: python_tasks/quest.py (deflated 59%)
  adding: python_tasks/hello.py (deflated 23%)
  adding: python_tasks/my_script.txt (deflated 2%)

Використання команди zip при створенні архівів дозволяє вибірково додавати файли і підкаталоги у архів. Для цього використовують опцію -x. Наприклад, необхідно у архів py_tasks_choice.zip рекурсивно додати лише файли quest.py і hello.py з каталогу python_tasks (не включаючи файл my_script.txt)

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ ls python_tasks/
hello.py  my_script.txt  quest.py
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ zip -r py_tasks_choice.zip python_tasks/ -x python_tasks/my_script.txt
  adding: python_tasks/ (stored 0%)
  adding: python_tasks/quest.py (deflated 59%)
  adding: python_tasks/hello.py (deflated 23%)
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ unzip -l py_tasks_choice.zip
Archive:  py_tasks_choice.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2018-05-28 14:40   python_tasks/
      491  2017-08-05 16:35   python_tasks/quest.py
       44  2018-05-28 13:54   python_tasks/hello.py
---------                     -------
      535                     3 files

Щоб видалити файл hello.py із вже створеного архіву py_tasks_choice.zip, разом із командою zip використовують опцію -d

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ zip -d py_tasks_choice.zip python_tasks/hello.py
deleting: python_tasks/hello.py
teacher@teacher-VirtualBox:~/terminal_work/testarchives$ unzip -l py_tasks_choice.zip
Archive:  py_tasks_choice.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2018-05-28 14:40   python_tasks/
      491  2017-08-05 16:35   python_tasks/quest.py
---------                     -------
      491                     2 files

Аналогічно, для видалення групи файлів із створеного архіву py_tasks_choice.zip одного типу (наприклад, .py) можна використовувати наступну команду

teacher@teacher-VirtualBox:~/terminal_work/testarchives$ zip -d py_tasks_choice.zip "*.py"

5. Адміністрування системи

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

5.1. Користувачі і групи

5.1.1. Суперкористувач

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

Суперкористувач має право на виконання будь-яких дій і зміни будь-яких параметрів. Більшість системних процесів працюють від імені root.

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

На відміну від суперкористувача, звичайний користувач у Linux не може вплинути на працездатність системи, зокрема, не може встановлювати і видаляти програми, керувати системними налаштуваннями і змінювати файли поза межами свого домашнього каталогу.

Суперкористувач в Ubuntu захований всередині системи, а управлінням і налаштуванням системи займаються звичайні користувачі зі спеціальними адміністративними привілеями.

При встановленні системи Linux створюється обліковий запис адміністратора.

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

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

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

Тому для адміністративних дій, які вимагають прав суперкористувача, використовують команду sudo.

sudo - це назва програми, що надає привілеї root для виконання адміністративних дій.

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

Використовується команда sudo у терміналі і має такий синтаксис

sudo команда

Далі система запропонує ввести свій пароль.

При введенні паролів, символи, що вводяться, не відображаються на екрані. Це нормально і зроблено в цілях безпеки, просто необхідно ввести до кінця і натиснути Enter .

Після введення пароля вказана команда виконується від імені root.

5.1.2. Групи користувачів

Linux, в цілому, і Ubuntu, зокрема, - системи, розраховані на багато користувачів, тобто на одному комп’ютері може бути кілька різних користувачів (облікових записів), кожен зі своїми власними налаштуваннями, даними і правами доступу до різних системних функцій.

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

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

student@teacher-VirtualBox:~$ sudo apt update
[sudo] пароль до student:
student немає у файлі sudoers. Запис про подію додано до звіту.

то це означає, що користувач (в даному випадку student) не має прав суперкористувача на використання команди sudo, адже не входить у однойменну групу.

Давайте переглянемо список користувачів (облікових записів) і груп, які вже присутні у системі. Для цього можна скористатися кількома способами.

Щоб вивести тільки список ідентифікаторів груп поточного користувача, необхідно використовувати команду id з опцією -G

teacher@teacher-VirtualBox:~$ id -G
1000 4 24 27 30 46 116 126

Якщо необхідно отримати імена груп поточного користувача, то використовується опція -n

teacher@teacher-VirtualBox:~$ id -Gn
teacher adm cdrom sudo dip plugdev lpadmin sambashare

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

teacher@teacher-VirtualBox:~$ id -Gn student
student adm dialout fax cdrom floppy tape audio dip video plugdev scanner
Вся інформація (крім паролів) про облікові записи користувачів зберігається у файлі /etc/passwd. Список груп, присутніх у системі, знаходиться у файлі /etc/group.

Паролі облікових записів зберігаються у файлі /etc/shadow. Права, встановлені на цей файл, не дозволяють прочитати їх проcтому користувачу.

Від імені суперкористувача переглянути вміст файла /etc/shadow у терміналі можна за допомогою команди cat наступним чином: sudo cat /etc/shadow.

Відкриємо файл /etc/passwd текстовим редактором gedit за допомогою термінала, увівши команду

gedit /etc/passwd

У результаті отримаємо список облікових записів

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
...
teacher:x:1000:1000:Teacher,,,:/home/teacher:/bin/bash
vboxadd:x:999:1::/var/run/vboxadd:/bin/false
student:x:1001:1001:Учень,,,:/home/student:/bin/bash

Один рядок відповідає опису одного облікового запису і складається з кількох полів, розділених двокрапкою. Наприклад, рядок teacher:x:1000:1000:Teacher,,,:/home/teacher:/bin/bash можна прочитати так:

  • teacher - ім’я користувача для входу у систему;

  • x - необов’язковий зашифрований пароль;

  • 1000 - числовий індентифікатор користувача (UID);

  • 1000 - числовий індентифікатор основної групи (GID);

  • Teacher,,, - необов’язкове поле, яке використовується для вказівки додаткової інформації про користувача (наприклад, повне ім’я користувача);

  • /home/teacher - домашній каталог користувача;

  • /bin/bash - командний інтерпретатор користувача.

Системними обліковими записами в Ubuntu вважаються усі користувачі з UID < 1000.

Відкриємо файл /etc/group текстовим редактором gedit через термінал, ввівши команду

gedit /etc/group

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

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,teacher
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:teacher
floppy:x:25:
tape:x:26:
sudo:x:27:teacher
audio:x:29:pulse
dip:x:30:teacher
...

Наприклад, рядок sudo:x:27:teacher можна прочитати так:

  • sudo - назва групи (перебування у цій групі надає дозвіл на використання команди sudo);

  • x - необов’язковий зашифрований пароль;

  • 27 - числовий індентифікатор групи (GID);

  • teacher - список користувачів, які знаходяться у групі.

Кожна група дозволяє читання або запис певного файла або каталогу системи, тим самим регулюючи повноваження користувача.

Щоб дізнатися назви груп, до яких належить конкретний користувач (наприклад, teacher), необхідно у терміналі написати наступну команду

teacher@teacher-VirtualBox:~$ groups teacher
teacher : teacher adm cdrom sudo dip plugdev lpadmin sambashare

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

  • adm - використовується для завдань моніторингу системи (дозволяє читати логи з каталогу /var/log);

  • cdrom - надає користувачам доступ до дисковода оптичних дисків;

  • sudo - дозволяє використовувати команду sudo;

  • plugdev - дозволяє монтувати знімні пристрої (USB, CD та інші);

  • lpadmin - дозволяє керувати принтерами та очікуванням завдань, відправлених іншими користувачами;

  • sambashare - дозволяє створювати спільні ресурси у файловому обміні між Windows і Ubuntu.

Для створених файлів і каталогів призначається головна група користувача, який їх створив.

Виконаємо у терміналі команду ls, яка показує вміст домашнього каталогу користувача (~), вказавши опцію -l (у вигляді списку)

teacher@teacher-VirtualBox:~$ ls -l ~
загалом 48
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Відео
drwxr-xr-x 2 teacher teacher 4096 кві 30 20:38 Документи
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Завантаження
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Загальнодоступні
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Зображення
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Музика
drwxr-xr-x 3 teacher teacher 4096 кві 30 21:17 Стільниця
drwxr-xr-x 2 teacher teacher 4096 кві 30 18:47 Шаблони
-rw-r--r-- 1 teacher teacher 8980 кві 30 18:41 examples.desktop
drwxr-xr-x 2 teacher teacher 4096 кві 30 20:43 pythonguide

Можна пересвідчитися, що власник усіх каталогів teacher (третя колонка списку) і група теж teacher (четверта колонка списку).

5.1.3. Зміна користувача в терміналі

Для виконання певних адміністративних задач в терміналі від імені адміністратора, коли активним є обліковий запис звичайного користувача з обмеженими привілеями, можна використовувати команду su. Дана команда перемикає вас у сеанс іншого облікового запису (наприклад, адміністратора).

Використання команди su можна розглянути на такому прикладі. Перебуваючи в обліковому записі користувача з обмеженими правами (student) вводимо в терміналі команду su teacher для переходу в обліковий запис teacher, який має адміністративні права, і вказуємо пароль облікового запису teacher

student@teacher-VirtualBox:~$ su teacher
Пароль:
teacher@teacher-VirtualBox:/home/student$

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

teacher@teacher-VirtualBox:/home/student$ exit
exit
student@teacher-VirtualBox:~$
Щоб дізнатися ім’я користувача, від якого будуть виконуватися команди в терміналі, необхідно ввести команду whoami.

Команда sudo запускає с правами суперкористувача тільки одну команду. При виконанні команди sudo система запитує поточний пароль користувача, а потім виконує команду від імені суперкористувача.

За замовчуванням, Ubuntu пам’ятає введенний пароль 15 хвилин, і протягом цього часу при повторному використанні не буде запитувати його. Якщо у терміналі необхідно виконати велику кількість команд і кожен раз введення пароля не влаштовує, то можна відкрити сеанс суперкористувача, який дозволить позбутися цих незручностей

teacher@teacher-VirtualBox:~$ sudo su
[sudo] пароль до teacher:
root@teacher-VirtualBox:/home/teacher# exit
exit
teacher@teacher-VirtualBox:~$

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

5.1.4. Права доступу до файлів і каталогів

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

Наприклад, зробивши себе власником якогось файла і повністю заборонивши до нього доступ усім, крім користувача-власника, можна приховати вміст і заборонити зміну цього файла для всіх інших користувачів. Аналогічно із каталогами. Можна, наприклад, заборонити записувати файли у каталог, або взагалі приховати його вміст від сторонніх очей.

Файловий менеджер Nautilus і права доступу

У програмі Nautilus (файловий менеджер Ubuntu), можна натиснути правою кнопкою миші на файлі або каталозі (або на кількох вибраних файлах або каталогах), відкрити Властивості (Ctrl+I), перейти на вкладку Права і переглянути права доступу, власника і групу.

Права доступу в Ubuntu
Права доступу в Ubuntu: встановлення прав доступу для каталогу python_work

Крім того, можна змінити права доступу для вкладених файлів і каталогів, клікнувши у вікні вкладки Права на кнопку Змінити права для вкладених файлів....

Права доступу в Ubuntu
Права доступу в Ubuntu: встановлення прав доступу для файлів і каталогів, які знаходяться у каталозі python_work
Лише у випадку, якщо ви є власником файла або каталогу, то ви можете змінити права доступу.

З подібної організації прав доступу у системі випливає вкрай важливий наслідок.

Конкретному користувачу Ubuntu належить тільки його домашній каталог і весь його вміст. У системі цей каталог знаходиться за адресою /home/ім’я_користувача.

Усі інші файли системи, включаючи всі додатки, системні налаштування і т.д., що розташовуються поза /home, належать переважно root. І це недарма, адже їм усім виставлені права на зміну тільки для користувача-власника. Таким чином, ніхто, окрім root, не може втрутитися в роботу системи і щось змінити у системних файлах.

Як редагувати системні файли за допомогою графічного інтерфейсу?

Інколи виникають задачі, коли необхідно запустити програму з графічним інтерфейсом від імені суперкористувача, (наприклад, текстовий редактор для редагування системного файла). У цьому випадку для встановлення прав при запуску графічних програм використовувався пакунок gksu.

Пакунок gksu надавав графічний інтерфейс для утиліт su (gksu) та sudo (gksudo) і дозволяв користувачам вводити пароль та запускати команди з графічним інтерфейсом від імені суперкористувача (без потреби запуску su або sudo з вікна термінала).

Але пакунок gksu було видалено з репозиторіїв Ubuntu 18.04 LTS.

Рекомендованим способом виконання операцій, що вимагають підвищених дозволів при роботі за допомогою графічного інтерфейсу користувача, є використання так званого бекенда адміністратора, який використовує спеціальний префікс admin://.

Наприклад, якщо раніше для редагування певного системного файла в текстовому редакторі від імені суперкористувача використовувався у терміналі запис

gksu gedit /шлях/до/файла

то зараз необхідно записувати наступним чином

gedit admin:///шлях/до/файла

Якщо необхідно відкрити файл від імені суперкористувача у файловому менеджері Nautilus, необхідно натиснути Ctrl+L, щоб можна було б увести в адресний рядок admin://, потім - шлях до каталогу, що містить файл, який необхідно відредагувати, і ввести свій пароль.

Зокрема, Nautilus також можна відкрити в режимі адміністратора. Для встановлення функції Відкрити як адміністратор, необхідно виконати у терміналі наступну команду

sudo apt install nautilus-admin

і перезапустити файловий менеджер Nautilus. Тепер, відкривши Nautilus, можна натиснути правою кнопкою миші на потрібному каталозі/файлі та обрати команди Open as administrator або Edit as administrator.

5.1.5. Створення користувача

Створимо нового користувача з ім’ям student та паролем, а потім додамо його в групу users. Усі дії будемо виконувати через термінал.

Для створення користувача, використаємо команду useradd, яка має синтаксис

useradd опції ім'я_користувача

В нашому випадку команда для додавання нового користувача буде наступною

sudo useradd -m -s /bin/bash student

У даному записі команди useradd використано дві опції:

  • -m (вказує, що необхідно створити домашній каталог, якщо він не існує);

  • -s зі значенням /bin/bash (командна оболонка, яка використовується користувачем, за замовчуванням /bin/sh).

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

teacher@teacher-VirtualBox:~$ useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

Встановлення пароля для нового користувача student відбувається введенням команди

sudo passwd student

і наступним введенням пароля.

Для додавання користувача student у групу users необхідно використати команду usermod, яка має такий же синтаксис, як і useradd. Додавання користувача у групу матиме такий вигляд

sudo usermod -G users -a student

Опція -a вказує на приєднання користувача student, а опція -G вказує на групи (у даному випадку на єдину групу users), до яких треба приєднати, записані через кому без пропусків.

Більш простий спосіб створення нового користувача - використання команди adduser.

У системах Ubuntu команда adduser пов’язана зі скриптом, який обробляє процедуру створення користувача

sudo adduser ім'я_користувача

При роботі скрипта з’явиться кілька запитань, на які треба дати відповіді, наприклад так

teacher@teacher-VirtualBox:~$ sudo adduser student
[sudo] пароль до teacher:
Додається користувач "student"...
Додається нова група "student" (1001)...
Додається новий користувач "student" (1001) з групою "student"...
Створюється домашня директорія "/home/student"...
Копіюються файли з "/etc/skel"..
Введіть новий пароль UNIX:
Повторіть новий пароль UNIX:
passwd: пароль було успішно змінено
Зміна інформації про користувача student
Введіть нове значення або натисніть ENTER для значення за замовчанням
	Повне ім'я []: Учень
	Номер кімнати []:
	Робочий телефон []:
	Домашній телефон []:
	Інше []:
chfn: ім'я «Учень» містить не ASCII-символи
Чи є ця інформація вірною? [Т/н]
teacher@teacher-VirtualBox:~$

Для видалення користувача із системи можна використовувати команду deluser.

Наступна команда видалить користувача student і його домашній каталог (опція --remove-home) із системи

sudo deluser --remove-home student

Налаштування за замовчуванням команди deluser знаходяться у файлі /etc/deluser.conf, який можна відкрити і переглянути, виконавши команду

sudo gedit /etc/deluser.conf

5.1.6. Додаток Users & Groups

Управління користувачами, обліковими записами і групами в Ubuntu можна виконувати також із використанням програми Користувачі та групи. Даний додаток звільняє від використання термінала при створенні і редагуванні користувачів та груп в Ubuntu, окрім того, у програмі можна також керувати привілеями.

Програму можна встановити із репозиторія Ubuntu командою

sudo apt install gnome-system-tools

або через Ubuntu Software Ubuntu Software (Програми Ubuntu), написавши у рядку пошуку gnome-system-tools.

Детальніше про встановлення програм в Ubuntu читайте у розділі 5.2 і розділі 6.

Після встановлення, програму можна запустити через утиліту Показати програми Утиліта Показати програми в Ubuntu

Користувачі та групи в Ubuntu
Користувачі та групи - програма для налаштування облікових записів, груп, привілеїв

Основні дії, що можна виконувати у програмі Користувачі та групи, наведені нижче.

Додавання нового облікового запису (кнопка Додати)

Користувачі та групи в Ubuntu
Користувачі та групи: додавання нового облікового запису

Введення і підтвердження пароля (кнопка Гаразд)

Користувачі та групи в Ubuntu
Користувачі та групи: встановлення пароля для нового облікового запису

Зміна типу нового облікового запису на Користувач

Користувачі та групи в Ubuntu
Користувачі та групи: обліковий запис звичайного користувача

Створення нового облікового запису Учень завершено

Користувачі та групи в Ubuntu
Користувачі та групи: створення нового облікового запису Учень завершено

Розширені параметри (контактна інформація, привілеї) облікового запису Учень (кнопка Розширені параметри)

Користувачі та групи в Ubuntu
Користувачі та групи: розширені параметри облікового запису Учень

Параметри груп (кнопка Керування групами у головному вікні програми Користувачі та групи)

Користувачі та групи в Ubuntu
Користувачі та групи: група sudo

Членство у групах

Користувачі та групи в Ubuntu
Користувачі та групи: обліковий запис Учень не входить у групу sudo

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

Програмою Користувачі та групи можна також видалити користувача, виконавши нескладні налаштування.

5.2. Встановлення і видалення програм

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

В Ubuntu існує багато способів встановлення програм. Тут можна скористатися і вбудованим в систему додатком Ubuntu Software (Програми Ubuntu) Ubuntu Software, і керівником пакунків (наприклад, Synaptic), і встановлювати програми з репозиторіїв за допомогою команд у терміналі, а також завантажувати пакунки програм з Інтернету, після чого встановлювати їх - також різними способами.

5.2.1. Ubuntu Software (Програми Ubuntu)

Одним із варіантів перегляду, встановлення і видалення програм в Ubuntu є використання Ubuntu Software Ubuntu Software (Програми Ubuntu).

Ubuntu Software
Ubuntu Software (Програми Ubuntu)

Для встановлення конкретної програми, необхідно обрати категорію, в якій вона може бути, знайти її назву і обрати для встановлення. Або виконати пошук програми за назвою або частиною назви.

Крім того, в Ubuntu Software (Програми Ubuntu) можна переглянути встановлені, оновлені програми у системі, а, за потреби, і видалити програму із системи.

5.2.2. Synaptic

Synaptic - керівник пакунків - програма, що дозволяє керувати пакунками в Ubuntu. Вона поєднує в собі всі можливості системи керування пакунками apt (потужний інструмент командного рядка) та зручність графічного інтерфейсу. Synaptic є надбудовою над apt.

За допомогою Synaptic, ви можете встановлювати, видаляти, налаштовувати і оновлювати пакунки у вашій системі, переглядати списки доступних і встановлених пакунків, керувати репозиторіями і оновлювати систему до нової версії.

Для встановлення даного керівника пакунків у терміналі необхідно ввести команду

sudo apt install synaptic

Для запуску Synaptic необхідно відкрити Утиліта Показати програми в Ubuntu і ввести у рядку пошуку synaptic або керівник пакунків

Керівник пакунків Synaptic
Керівник пакунків Synaptic в Ubuntu

Також, Synaptic можна запустити, увівши у терміналі команду

sudo synaptic

Після запуску ви побачите головне вікно програми

Керівник пакунків Synaptic
Керівник пакунків Synaptic в Ubuntu: головне вікно Synaptic
Для отримання докладної інформації про певний пакунок, необхідно клікнути на ньому правою кнопкою миші і в контекстному меню обрати Властивості.

В Synaptic для пошуку певних пакунків присутній набір фільтрів:

  • за розділами (Ігри та розваги, Графіка, Керування системою і т.д.);

  • за статусом (Встановлені, Не встановлені, Встановлені (вручну) і т.д.);

  • за походженням (тобто з якого джерела встановлена або може бути встановлена та чи інша програма).

Перед пошуком і встановленням певного пакунку слід натиснути на кнопці Оновити список пакунків для того, щоб завантажити список пакунків найновіших версій.

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

Керівник пакунків Synaptic
Керівник пакунків Synaptic в Ubuntu: пошук пакунку за назвою

В рузультаті буде знайдений список взаємопов’язаних пакунків

Керівник пакунків Synaptic
Керівник пакунків Synaptic в Ubuntu: знайдені пакунки, пов’язані з vlc

Необхідно виконати правий клік на потрібному пакунку (в даному випадку на vlc) і обрати в контекстному меню, що з’явилося, пункт Позначити для встановлення. Якщо пакунок вимагає встановлення інших пакунків, то з’явиться діалогове вікно зі змінами, які будуть зроблені

Керівник пакунків Synaptic
Керівник пакунків Synaptic в Ubuntu: додавання взаємопов’язаних пакунків

Якщо треба продовжити встановлення, то необхідно натиснути на кнопці Позначити. Для встановлення, необхідно натиснути кнопку Застосувати на головній панелі керівника пакунків Synaptic

Керівник пакунків Synaptic
Керівник пакунків Synaptic в Ubuntu: позначення усіх взаємозалежних пакунків

і погодитися зі змінами, натиснувши на кнопку Застосувати

Керівник пакунків Synaptic
Керівник пакунків Synaptic в Ubuntu: підтвердження дій для встановлення vlc

Далі відбудеться завантаження пакунків

Керівник пакунків Synaptic
Кервіник пакунків Synaptic в Ubuntu: завантаження пакунків з Інтернету

із наступним встановленням

Керівник пакунків Synaptic
Керівник пакунків Synaptic в Ubuntu: встановлення пакунків медіа-програвача vlc

По завершенню, з’явиться повідомлення про успішне встановлення

Керівник пакунків Synaptic
Керівник пакунків Synaptic в Ubuntu: повідомлення про успішне встановлення медіа-програвача vlc
Для видалення встановленого пакунку (ознака того, що пакунок встановлений - прямокутник з зеленою заливкою зліва від його імені), слід повторити дії, що виконуються при встановленні пакунку, вказавши тільки пункт Позначити для вилучення.
Пошкоджені пакунки

Пошкоджені пакунки - це пакунки, які мають незадовільні залежності.

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

Для виправлення пошкоджених пакунків необхідно у меню Редагування програми Synaptic виконати послідовно такі дії:

  1. Обрати пункт Виправити пошкоджені пакунки.

  2. Обрати пункт Застосувати позначені зміни (Ctrl+P).

  3. Натиснути кнопку Застосувати.

Synaptic можна використовувати для підтримки системи Ubuntu у чистоті, тобто для очищення кешу оновлень пакунків, видалення невикористовуваних залишків невстановлених програм, очищення кешу мініатюр (ескізів зображень), видалення старих ядер.

Кеш - тимчасове сховище даних (файлів, записів, знімків тощо), накопичених у процесі роботи користувача в системі.

Для очищення кешу оновлень після оновлення системи, тобто для видалення файлів, що вже не використовуються, необхідно у меню Synaptic обрати Налаштування  Параметри  Файли та активувати пункт Вилучати завантажені пакунки після встановлення

Вилучення завантажених пакунків після встановлення у Synaptic
Керівник пакунків Synaptic в Ubuntu: вилучення завантажених пакунків після встановлення

А потім натиснути кнопки: Вилучити зебережені (у кеші) файли пакунків, щоб очистити використані файли, Застосувати та Гаразд. Тепер усі завантажені файли пакунків після встановлення додатків будуть видалятися автоматично, оскільки вони більше не потрібні у системі.

Для видалення залишків (конфігураційних файлів) не встановлених програм у Synaptic необхідно натиснути на кнопці Статус, у списку вгорі обрати пункт Не встановлені (але є конфігураційні файли).

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

Вилучення конфігураційних файлів не встановлених програм у Synaptic
Керівник пакунків Synaptic в Ubuntu: вилучення конфігураційних файлів не встановлених програм

За допомогою керівника пакунків Synaptic можна виконувати видалення старих ядер Linux або таких, що вже не використовуються.

У системі рекомендується мати дві версії ядра - останню (найновішу) версію, що використовується на даний момент, і попередню, на випадок виникнення будь-яких неполадок.
Ядро Linux

Ядро Linux робить дуже багато корисних речей, окрім керування пам’яттю, процесами і основними компонентами комп’ютера. Усі драйвера системних пристроїв теж вбудовані у ядро.

Якщо у комп’ютера є які-небудь проблеми з підтримкою обладнання у Linux, то оновлення ядра Ubuntu може поліпшити ситуацію.

Нові версії ядер містять виправлення, різні поліпшення роботи і продуктивності системи, а також різні нововведення, які роблять роботу з Linux краще. Тому корисно завжди мати у власній системі найновіше ядро. Але більшість дистрибутивів, зокрема Ubuntu, досить консервативні і містять старі, перевірені часом версії ядер, а нові додаються дуже повільно.

Згодом, через оновлення ядер, у системі накопичується багато невикористовуваних образів ядер, які лише займають дисковий простір. Кожен образ ядра разом з пов’язаними файлами-заголовками і файлами модулів займає близько 200-400 мегабайт. Таким чином, видалення старих ядер в Ubuntu дозволить звільнити зайнятий дисковий простір.

Подивитися скільки у системі наявних образів ядер можна за допомогою файлового менеджера Nautilus, відкривши каталог /boot, або виконавши у терміналі команду ls /boot/

teacher@teacher-VirtualBox:~$ ls /boot/
abi-4.15.0-23-generic         memtest86+.elf
abi-4.15.0-28-generic         memtest86+_multiboot.bin
config-4.15.0-23-generic      retpoline-4.15.0-23-generic
config-4.15.0-28-generic      retpoline-4.15.0-28-generic
grub                          System.map-4.15.0-23-generic
initrd.img-4.15.0-23-generic  System.map-4.15.0-28-generic
initrd.img-4.15.0-28-generic  vmlinuz-4.15.0-23-generic
lost+found                    vmlinuz-4.15.0-28-generic
memtest86+.bin

У даному випадку, у системі встановлені дві версії ядра: 4.15.0-23 і 4.15.0-28.

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

Щоб переглянути повний шлях до образу ядра, який завантажений в поточну систему (по іншому, переглянути рядок запуску GRUB), необхідно виконати у терміналі команду

cat /proc/cmdline

і в параметрі BOOT_IMAGE буде вказаний повний шлях до образу ядра, який зараз завантажений

teacher@teacher-VirtualBox:~$ cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-4.15.0-28-generic root=UUID=1b059377-7e5f-449e-91aa-5437675338b9 ro quiet splash

Інформацію про активну версію ядра можна також дізнатися за допомогою команди

cat /proc/version

виконавши її у терміналі

teacher@teacher-VirtualBox:~$ cat /proc/version
Linux version 4.15.0-28-generic (buildd@lgw01-amd64-002) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #30-Ubuntu SMP Thu Jul 12 17:35:57 UTC 2018

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

teacher@teacher-VirtualBox:~$ uname -r
4.15.0-28-generic

Далі потрібно у поле Пошук вікна Synaptic ввести рядок linux-image, після чого у правій колонці будуть відображені усі ядра системи. Встановлені ядра будуть позначені зеленим квадратиком

Список ядер системи Ubuntu в Synaptic
Керівник пакунків Synaptic в Ubuntu: список ядер системи Ubuntu

Далі потрібно залишити актуальне ядро, назва якого була відображена у терміналі після виконаної команди uname -r (4.15.0-28-generic), передостанню версію ядра, а решту, за потреби, можна видалити, виконавши такі дії:

  • правий клік на рядку з версією ядра (із написом generic);

  • в контекстному меню обрати Позначити для повного вилучення;

  • у меню програми Synaptic натиснути Застосувати.

Також необхідно оновити завантажувач GRUB, щоб і з його меню видалити тепер непотрібні ядра. Це можна зробити у терміналі за допомогою команди

sudo update-grub

а потім виконати перезавантаження комп’ютера.

Після нового входу у систему можна зробити додаткове очищення системи наступними командами

sudo apt autoremove
sudo apt autoclean

Для видалення старих ядер, крім останнього і передостаннього, можна також використовувати наступну команду

sudo apt purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1)

а після цього виконати команди по очищенні системи і оновлення завантажувача GRUB

sudo apt autoremove
sudo update-grub
За допомогою Synaptic можна також встановити у систему нові версії ядра Linux. Для цього у вікні Synaptic необхідно виконати правий клік на рядку з назвою ядра нової версії, в контекстному меню обрати Позначити для встановлення та у меню програми Synaptic натиснути Застосувати, оновити завантажувач GRUB і перезавантажити комп’ютер.

5.2.3. apt

Один з методів встановлення програм - система керування пакунків apt. Це популярний, потужний інструмент командного рядка для керування пакунками.

apt вміє не тільки їх встановлювати, але і видаляти, оновлювати, завантажувати списки пакунків з Інтернету і багато іншого. Тобто все, що вміє Synaptic, але тільки з командного рядка.

apt дозволяє завантажувати лише ті пакунки, які розташовані на віддалених серверах, тобто, у мережевих репозиторіях.

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

Синтаксис для роботи з apt такий

sudo apt опції команда ім'я_пакунка

Однією з основних опцій є -f - виконати операцію примусово (використовується для усунення збоїв в базі пакунків, викликаних порушеними залежностями). А ось кілька основних команд apt, які можна використовувати для керування пакунками:

  • download - завантажити пакунок, але не встановлювати;

  • update - використовується для оновлення інформації про списки пакунків в репозиторіях;

  • upgrade - оновлення системи без видалення пакунків;

  • full-upgrade - повне оновлення системи з видаленням конфліктуючих залежностей;

  • install - встановлення пакунку;

  • remove - видалення пакунку без видалення конфігураційних файлів;

  • autoremove - автоматичне видалення пакунків, які більше не потрібні в системі;

  • purge - повне видалення пакунку;

  • show - подивитися інформацію про пакунок;

  • autoclean - видалити застарілі пакунки (які були замінені при оновленні);

  • clean - повністю очистити кеш.

Використання apt передбачає, що ви точно знаєте, чого ви хочете. Наприклад, ви хочете встановити переглядач графічних файлів Pinta , тоді вам необхідно виконати наступні команди в терміналі

sudo apt update
sudo apt install pinta

Перший рядок sudo apt update - це оновлення даних про доступні в репозиторіях програми. Другий рядок можна прочитати так:

  • sudo - означає, що наступні після нього команди будуть виконуватися від імені суперкористувача;

  • apt - власне, викликає саму систему керування пакунками apt;

  • install - команда для встановлення пакунку;

  • pinta - ім’я пакунку, який треба встановити (можна вказати кілька пакунків, просто розділяючи їх назви пропусками).

А для видалення пакунку достатньо набрати у терміналі наступну команду

sudo apt purge pinta

Команда sudo apt autoremove використовується для очищення системи від непотрібних пакунків.

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

Очищення системи: мініатюри зображень

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

Імена прихованих каталогів і прихованих файлів починаються з точки, наприклад: .cache, .config та інші. Точка перед ім’ям файла/каталогу робить їх прихованими.

У файловому менеджері Nautilus, використавши сполучення клавіш Ctrl+H , можна переглянути усі приховані файли і каталоги поточного каталогу.

Відкриємо домашній каталог користувача, а далі послідовно каталог .cache і каталог .thumbnails (ескізи), у якому зберігаються інші каталоги із мініатюрами зображень, які використувались користувачем

Каталог зберігання ескізів зображень
Каталог зберігання ескізів зображень

Згодом, число мініатюр може різко збільшитися, окрім того, кеш мініатюр може містити багато зайвих ескізів знімків/фотографій, які більше не існують.

Кеш мініатюр можна очистити вручну, відкривши каталог і видаливши вміст.

Або використати швидший спосіб очищення мініатюр, виконавши у терміналі наступну команду

sudo rm -f ~/.cache/thumbnails/normal/*
Оновлення і очищення системи можна здійснити за допомогою універсальної утиліти обслуговування системи ucaresystem-core.
Варто пам’ятати, що використання різних автоматизованих утиліт для обслуговування системи є не завжди безпечним і може пошкодити систему. Ручний спосіб (введення команд з клавіатури) є більш пріоритетним і безпечнішим методом виконання різних адміністративних дій у системі.
Утиліта uCareSystem Core

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

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

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

  • apt update

  • apt upgrade

  • apt autoremove

  • apt clean

  • dpkg --list | grep linux-image (показати список усіх ядер у системі)

  • apt purge linux-image-x.x.x.x-generic (x.x.x.x - версія ядра, яке буде видалено)

  • update-grub2 (оновлення завантажувача GRUB)

В офіційному репозиторії Ubuntu утиліти ucaresystem-core немає, вона міститься у власному PPA-репозиторії. Підключається репозиторій звичайним чином

sudo add-apt-repository ppa:utappia/stable

і настільки ж просто утиліта з нього встановлюється

sudo apt install ucaresystem-core

Після встановлення утиліти, її можна запустити в терміналі з правами адміністратора

sudo ucaresystem-core

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

Після цього виконується оновлення системи (команда apt upgrade). Далі система перевіряється на предмет недоступних пакунків, тобто осиротілих залежностей. І при виявленні - вони видаляються (команда apt autoremove).

Услід за цим, настає час перевірки системи на наявність застарілих ядер. І, якщо такі виявляються - видаленню підлягають усі, крім активного та пріоритетного, разом з відповідними компонентами і каталогами.

Наступний крок - виявлення та видалення конфігураційних файлів, що залишилися від вилучених пакунків.

Завершується робота сценарію очищенням системи від пакунків, завантажених в процесі їх встановлення та оновлення (тобто виконується команда apt clean). Увесь процес завершується повідомленням про успішність виконання вищевказаних дій

#########################
          Done
#########################

При виконанні у терміналі команди apt moo можна побачити корову, яка запитає: Ви мукали сьогодні?.

teacher@teacher-VirtualBox:~$ apt moo
                 (__)
                 (oo)
           /------\/
          / |    ||
         *  /\---/\
            ~~   ~~
..."Have you mooed today?"...

5.2.4. deb-пакунки

Якщо в репозиторіях Ubuntu потрібної програми не знайшлося, або ж знайшлося, але не останньої версії (а таке буває часто), то швидше за все необхідно зайти на сайт розробника програми, і завантажити інсталяційний пакунок у форматі *.deb-пакунка.

В Ubuntu по подвійному кліку на deb-пакунку відкривається, за замовчуванням, вікно додатку Ubuntu Software (Програми Ubuntu) для встановлення пакунку.
GDebi

GDebi - програма для встановлення deb-пакунків. Перевага її в тому, що вона може встановлювати deb-пакунки, автоматично завантажуючи і встановлюючи необхідні залежні пакунки.

GDebi дозволяє встановлювати локальні deb-пакунки, знаходячи й встановлюючи їх залежності.

Для встановлення програми GDebi в Ubuntu у терміналі необхідно виконати наступні команди

sudo apt install gdebi

Після того, як програма GDebi встановлена, її можна запустити через Утиліта Показати програми в Ubuntu

Встановлювач пакунків GDebi
Встановлювач пакунків GDebi

Відкривши deb-пакунок за допомогою GDebi, необхідно обрати кнопку Встановити пакунок

Встановлювач пакунків GDebi
Встановлювач пакунків GDebi: встановлення deb-пакунку

GDebi можна використати і у режимі командного рядка, виконавши наступну команду у терміналі

sudo gdebi назва_пакунку.deb

Виконувати команду необхідно з каталогу, де міститься даний deb-пакунок, або вказувати відносний шлях до deb-пакунку, наприклад

sudo gdebi ~/Завантаження/python3-multibootusb_8.8.0-1_all.deb
dpkg

Крім графічної утиліти GDebi, встановити, попередньо завантажені з Інтернету, пакунки в Ubuntu можна і простою командою dpkg (базова система керування пакунками в Debian-системах) у терміналі.

Спочатку переходимо у каталог, у який був завантажений deb-пакунок, і виконуємо команду у терміналі

sudo dpkg -i назва_пакунку.deb

Для команди dpkg доступні символи скороченого запису. Наприклад, щоб встановити всі deb-пакунки з поточного каталогу, можна написати так

sudo dpkg -i *.deb

Програма не вміє встановлювати залежності. Навіть, якщо є доступ до мережі Інтернет, вона тільки встановлює пакунок. Тому для встановлення залежностей, після встановлення deb-пакунку, необхідно виконати

sudo apt -f install

Тепер, коли залежності були завантажені, ви можете запускати і використовувати програму.

Щоб отримати список усіх пакунків системи, виконаємо у терміналі команду

dpkg -l

У результаті отримаємо таблицю з такими даними (показана лише верхня частина таблиці)

teacher@teacher-VirtualBox:~$ dpkg -l
Бажаний=невідомо[u]/встановити[i]/вилучити[r]/вичистити[p]/зафіксувати[h]
| Стан=не[n]/встановлений[i]/налаштований[c]/розпакований[U]/частково налаштований[F]/
частково встановлений[H]/trig-aWait/Trig-pend
|/ Помилка?=(ні)/вимагається перевстановлення[R] (верхній регістр
у полях стану й помилки вказує на ненормальну ситуацію)
||/ Ім'я           Версія       Архітектура  Опис
+++-==============-============-============-=================================
ii  accountsservic 0.6.45-1ubun amd64        query and manipulate user account
ii  acl            2.2.52-3buil amd64        Access control list utilities
ii  acpi-support   0.142        amd64        scripts for handling many ACPI ev
...

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

  • Бажаний стан пакунка

    1. u (unknown) - невідомий.

    2. i (install) - позначено для встановлення.

    3. r (remove) - позначено для вилучення.

    4. p (purge) - позначено для очищення (вилучення, включаючи файли конфігурації).

    5. h (hold) - зафіксований.

  • Поточний стан пакунка

    1. n (not-installed) - пакунок не встановлений.

    2. i (installed) - пакунок успішно встановлений і налаштований.

    3. c (config-files) - у системі присутні лише файли конфігурації пакунка.

    4. U (unpacked) - пакунок розпакований, але ще не налаштований.

    5. F (half-configured) - пакунок розпакований, і налаштування було запущено, але ще не завершено з якоїсь причини.

    6. h (half-installed) - встановлений частково (встановлення пакунка було запущено, але не завершено з якоїсь причини).

    7. W (triggers-awaiting) - пакунок очікує обробки тригерів іншим пакунком.

    8. t (triggers-pending) - пакунок був запущений.

  • Стан помилки (якщо помилка відсутня, на цьому місці пропуск)

    1. R (reinst-required) - пакунок зламаний, необхідне повторне встановлення.

Наприклад, позначення стану пакунка ii означає це буде встановлено та встановлено, rc - це буде вилучено, але файли конфігурації залишилися і т.д.

Резервне копіювання пакунків

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

Самим простим способом резервного копіювання Ubuntu - це резервна копія списку усіх встановлених пакунків. У даному випадку, не можливо зберегти налаштування програм, але можна дуже швидко відновити усі встановлені програми.

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

Виконавши у терміналі команду

dpkg --get-selections

можна отримати поточний список пакунків у системі Ubuntu (відображена лише невелика частина списку)

...
poppler-data					install
poppler-utils					install
popularity-contest				deinstall
powermgmt-base					install
ppa-purge						install
...

Параметр --get-selections дозволяє отримати список пакунків і записати його до стандартного потоку виведення (на екран термінала). У даному випадку, не встановлені пакунки (тобто ті, які були раніше видалені) не будуть показані.

У другій колонці отриманих результатів визначено стани пакунків:

  • install - пакунок позначений для встановлення;

  • deinstall - пакунок позначений для видалення (будуть видалені усі файли, крім файлів конфігурації).

Якщо необхідно перевірити, які пакунки мають стан deinstall (тобто будуть видалені), використайте команду

dpkg --get-selections | grep deinstall | cut -f 1-

Даний рядок можна детально прочитати так:

  • отримати список пакунків за допомогою команди dpkg --get-selections;

  • результат виконання попередньої команди перевести на виконання наступної за допомогою символу | (цей символ ще називається конвеєр і використовується для перенаправлення виведення);

  • обрати лише ті записи про пакунки, які мають стан deinstall за допомогою команди grep;

  • знову перенаправити виведення попередньої команди на вхід наступної за допомогою |;

  • використати команду cut для виведення на екран полів (параметр -f) від 1-го і до кінця рядка (1-).

Якщо необхідно перевірити, які пакунки зі станом deinstall будуть видалені, виконайте команду

dpkg --get-selections | grep deinstall | cut -f 1-

Щоб видалити пакунки із станом deinstall, можна використати команду

sudo dpkg --purge `dpkg --get-selections | grep deinstall | cut -f 1-`

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

dpkg --get-selections | grep -v deinstall > backup.txt

Опція -v у записі grep -v deinstall означає, що необхідно вибрати лише ті рядки, які не містять значення deinstall. За допомогою символа > результат відбору перенаправляється у файл backup.txt.

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

sudo dpkg --set-selections < backup.txt
sudo apt -y update # оновити список доданих пакунків (опція "-y" - автоматично відповідати Так на усі запити)
sudo apt dselect-upgrade # встановити пакунки, після додавання їх у список

Параметр --set-selections дозволяє отримати список пакунків за допомогою файла backup.txt, прочитаного із стандартного потоку введення.

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

5.2.5. Підключення репозиторіїв

Більшість необхідних програм зберігаються в офіційних сховищах пакунків (репозиторіях) Ubuntu, звідки вони завантажуються щоразу, коли ви щось встановлюєте. Однак деяких додатків (наприклад, які нещодавно з’явилися) в офіційних репозиторіях Ubuntu немає, або ж вони є - але старих версій. У таких випадках, зазвичай, потрібно додати у систему нове джерело додатків - новий репозиторій.

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

Наприклад, щоб встановити текстовий редактор Geany, потрібно спочатку підключити його репозиторій, тобто додати у джерела додатків вашої системи джерело, звідки він повинен встановлюватися і оновлюватися.

Додавання такого нового джерела можна виконати у терміналі за допомогою команди

sudo add-apt-repository ppa:geany-dev/ppa

Даний рядок можна прочитати так:

  • sudo - виконати усі наступні команди від імені суперкористувача;

  • add-apt-repository - команда додавання репозиторія;

  • ppa:geany-dev/ppa - назва PPA-репозиторія, який додається у систему.

Персональний архів пакунків (PPA)

Найпростішим способом поширення програм для Ubuntu є розміщення їх в репозиторіях.

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

Політика Canonical така, що в стандартних репозиторіях міститяться лише стабільні версії програм, випущені на момент виходу у світ дистрибутива. Надалі в репозиторії додаються тільки оновлення безпеки, що не змінюють версії встановлених програм. Крім того, додати розробнику свою програму в стандартні репозиторії не просто.

Для створення власного сховища необхідні ресурси, як мінімум, сервер, і непогані навички адміністратора. Все це створює деякі перешкоди для поширення програм для Ubuntu.

Тому для підтримки і розвитку вільних проектів був створений сервіс launchpad.net . Одна з ключових переваг сервісу для звичайного користувача - можливість будь-кому створити свій репозиторій. На launchpad таке сховище називається персональний архів пакунків (Personal Package Arhive - PPA), і використовується для поширення власних пакунків без зайвих технічних труднощів.

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

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

sudo apt update

І, нарешті, встановлення самого пакунку виконується командою

sudo apt install geany
Використання PPA у нових версіях Ubuntu

Починаючи з релізу Ubuntu 18.04 LTS змінилася кількість команд для встановлення нових програм (app) із сторонніх репозиторіїв з трьох команд

sudo add-apt-repository ppa:ppa-url
sudo apt update
sudo apt install app

на дві команди (тепер команда додавання PPA add-apt-repository сама запускає apt update, що дозволяє пропустити другий крок)

sudo add-apt-repository ppa:ppa-url
sudo apt install app

Крім того, у даному випадку, для текстового редактора Geany можна ще встановити плагіни, виконавши наступну команду

sudo apt install geany-plugins

Для видалення доданого репозиторія необхідно скористатися наступною командою у терміналі

sudo add-apt-repository --remove ppa:репозиторій/ppa

або відкрити програму Програмне забезпечення та оновлення (Software & Updates)

Програмне забезпечення та оновлення в Ubuntu
Додаток Програмне забезпечення та оновлення в Ubuntu

та перейти на вкладку Інше програмне забезпечення

Видалення репозиторіїв в Ubuntu
Видалення репозиторіїв в Ubuntu

для видалення потрібного сховища. На цій вкладці можна також відключити репозиторії.

Додаток Програмне забезпечення та оновлення можна відкрити, виконавши у терміналі команду sudo software-properties-gtk.

Окрім того, на вкладці Інше програмне забезпечення новий репозиторій можна додати універсальним способом. У цьому випадку, для коректного додавання PPA у систему необхідно виконати дві дії:

  • додати посилання на репозиторій у системний список джерел пакунків;

  • додати цифровий підпис сховища у систему.

Другий пункт потрібен для того, щоб система встановлення пакунків не нагадувала про наявність ненадійних джерел. Саме для цього необхідно відвідати сторінку з відповідним описом PPA (для прикладу, використаємо сторінку аудіоредактора Audacity на Launchpad).

На сторінці PPA, як бачимо, наведені команди для встановлення даної програми за допомогою термінала

sudo add-apt-repository ppa:ubuntuhandbook1/audacity
sudo apt update

Але у нашому випадку натискаємо на Technical details about this PPA:

Додавання репозиторія в Ubuntu універсальним способом
Додавання репозиторія в Ubuntu універсальним способом

Якщо Launchpad автоматично не визначив версію Ubuntu, необхідно обрати свою версію у випадаючому списку.

Два рядки у рамці - це два рядки з описом репозиторія (перший - для бінарних пакунків, другий - для вихідних кодів), які треба додати до списку джерел програмного забезпечення у системі.

Отже, на вкладці Інше програмне забезпечення необхідно натиснути кнопку Додати, у вікні, що з’явилося, ввести значення рядка для бінарних пакунків і натиснути Додати джерело

Додавання джерела у список репозиторіїв Ubuntu
Додавання джерела у список репозиторіїв Ubuntu

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

Після оновлення інформації, швидше за все, буде отримана помилка про те, що джерело не має цифрового підпису: The following signatures couldn’t be verified because the public key is not available (наступні підписи неможливо підтвердити, оскільки відкритий ключ недоступний)

W:GPG error: http://ppa.launchpad.net/ubuntuhandbook1/audacity/ubuntu bionic InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 4C1CBE14852541CB, E:The repository 'http://ppa.launchpad.net/ubuntuhandbook1/audacity/ubuntu bionic InRelease' is not signed.

Незважаючи на це, пакунки, що містяться в доданому репозиторії, можна встановлювати стандартними засобами.

Захист репозиторіїв

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

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

В Ubuntu, за замовчуванням, репозиторіями, яким можна довіряти, є репозиторії на інсталяційних образах і основні Інтернет-репозиторії - archive.ubuntu.com. При наявності на користувацькому комп’ютері декількох пов’язаних репозиторіїв, перевага віддається тим, яким можна довіряти.

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

Інколи, завантажені пакунки при встановленні самостійно реєструють ключі сховищ.

Якщо завантажити ключ із сайту репозиторія, то буде отриманий звичайний файл із розширенням .key, .gpg. Додати його в систему можна за допомогою термінала

sudo apt-key add repo.key

де repo.key - отриманий ключ сховища.

Інший спосіб додавання ключа - це імпорт файла-ключа, який можна виконати на вкладці Автентифікація вікна Програмне забезпечення та оновлення

Додавання цифрового підпису репозиторія в Ubuntu
Додавання цифрового підпису репозиторія в Ubuntu

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

Зазвичай, коли заходить мова про ключ, дається його незрозумілий, на перший погляд, буквенно-цифровий ідентифікатор виду 4C1CBE14852541CB (рядок з довільних цифр і літер латинського алфавіту у верхньому регістрі). Цей рядок - унікальне ім’я (ідентифікатор) ключа.

Іноді, ключ описується рядком виду 1024R/A0062203196CA4482DDB859E4C1CBE14852541CB, тоді ідентифікатором є частина після слеша.

Тому ключі, переважно, зберігаються на спеціальних серверах, звідки будь-хто може їх отримати. Ключі для репозиторіїв Ubuntu прийнято зберігати на keyserver.ubuntu.com. Для отримання і імпортування у систему ключа з сервера необхідно виконати команду

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4C1CBE14852541CB

де замість keyserver.ubuntu.com можна підставити адресу іншого сервера ключів, а замість 4C1CBE14852541CB необхідно написати ідентифікатор потрібного ключа.

Щоб імпортувати усі відсутні ключі репозиторіїв, необхідно виконати у терміналі

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com `sudo aptitude update 2>&1 | grep -o '[0-9A-Z]\{16\}$' | xargs`

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

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4C1CBE14852541CB

Тепер можна оновити список пакунків

sudo apt update

і встановити програму Audacity з підключеного PPA

sudo apt install audacity
Резервне копіювання списку репозиторіїв

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

Налаштування системних репозиторіїв зберігаються у файлі /etc/apt/sources.list. А каталог /etc/apt/sources.list.d/ містить окремі файли для кожного PPA, доданого користувачем за допомогою команди add-apt-repository.

Ключі репозиторіїв зберігаються аналогічним чином. Файл /etc/apt/trusted.gpg містить список ключів, а окремі файли всередині каталогу /etc/apt/trusted.gpg.d/ містять ключі для кожного доданого репозиторія.

Усі ці файли необхідні для резервного копіювання. Перейдемо до створення резервних копій цих файлів.

Для резервування ключів, доданих до системи, можна скористатися наступною командою, виконавши її у терміналі

sudo apt-key exportall > ~/repositories.key

Дана команда збереже усі ключі, додані у систему, у файл repositories.key, який буде збережений у домашньому каталозі користувача.

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

sudo apt-key add /шлях/до/repositories.key

Для створення резервної копії файла /etc/apt/sources.list можна використати наступну команду, яка збереже список репозиторіїв із нього в окремий файл sources.list у домашньому каталозі

cat /etc/apt/sources.list> ~/sources.list

А усі файли із каталогу /etc/apt/sources.list.d/, у цьому випадку, необхідно також скопіювати і зберегти у іншому місці для майбутнього відновлення. Якщо з’явиться необхідність використовувати резервні копії файлів, потрібно перемістити їх назад у відповідні каталоги і виконати команду

sudo apt update

для додавання репозиторіїв.

Як варіант, можна створити резервну копію усього каталогу /etc/apt і, за потреби, скопіювати його назад, якщо доведеться перевстановлювати систему, або скопіювати його у те ж місце на іншому комп’ютері з такою ж версією дистрибутива.

Якщо ви не сильно переймаєтеся тим, що кожний доданий PPA зберігається у власному файлі всередині каталогу /etc/apt/sources.list.d/, можна зберегти увесь список репозиторіїв системи в одному файлі з ім’ям sources.list, що буде розташований у домашньому каталозі, за допомогою команди

cat /etc/apt/sources.list /etc/apt/sources.list.d/*.list > ~/sources.list

Якщо з’явилась необхідність використати резервну копію файла зі списком усіх репозиторіїв системи, то залишається перемістити файл sources.list в /etc/apt/sources.list та виконати

sudo apt update

для повторного додавання репозиторіїв.

Якщо планується використовувати резервну копію на іншому комп’ютері, переконайтеся, що версія Ubuntu на цьому комп’ютері відповідає версіям у файлі sources.list, у іншому випадку можуть виникнути помилки.

Іншим варіантом створення резервної копії списку сховищ є використання утиліти Y PPA Manager, яку можна встановити із сторінки Launchpad за допомогою PPA (програма має також ряд інших можливостей для роботи з PPA)

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt install y-ppa-manager

Для запуску утиліти необхідно виконати у терміналі команду

sudo y-ppa-manager
Утиліта Y PPA Manager для роботи з PPA в Ubuntu
Утиліта Y PPA Manager для роботи з PPA в Ubuntu

5.2.6. Як користуватися файлами AppImage?

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

AppImage - це універсальний формат програмного забезпечення.

Для запуску програми формату AppImage не потрібно нічого встановлювати, досить завантажити програму, а завдяки тому, що усі бібліотеки знаходяться всередині образу (одна програма в одному файлі), її можна використовувати в більшості дистрибутивів Linux як портативний додаток. Це можна порівняти з .exe-файлами у Windows, які дозволяють запускати програмне забезпечення без фактичного проходження процедури встановлення.

Деякі можливості AppImage:

  • можливість роботи у різних дистрибутивах Linux;

  • відсутність необхідності встановлювати і компілювати програмне забезпечення;

  • відсутність необхідності в дозволі суперкористувача;

  • портативність: можна запускати у будь-якому місці, включаючи Live-диски;

  • додатки знаходяться в режимі тільки для читання;

  • програмне забезпечення видаляється, просто видаливши файл AppImage та інші.

Для прикладу роботи з файлами AppImage використаємо програму відеоредактора OpenShot.

Алгоритм використання файлів AppImage такий:

  1. Завантажуємо файл AppImage.

Файли AppImage можна знайти на сайтах розробників програм. Додатковий список додатків, які поширюються у форматі AppImage, можна знайти у сховищі проекту JFrog (завантаження можна виконати на сторінці обраної програми з вкладки Files, обравши розрядність і версію програми).

Файл AppImage відеоредактора можна завантажити за адресою із сайту розробника.

  1. Перетворюємо завантажений файл AppImage на виконуваний.

За замовчуванням, завантажений файл AppImage не має право на виконання. Необхідно встановити такий дозвіл, щоб зробити файл виконуваним.

Для цього, натисніть правою кнопкою миші на завантажений файл AppImage, щоб відкрити контекстне меню, потім виберіть Властивості (Ctrl+I), далі вкладку Права і виставте позначку Дозволити виконання файла як програми.

Інший спосіб створення виконуваного файла - використання термінала

teacher@teacher-VirtualBox:~/Завантаження$ sudo chmod +x OpenShot-v2.4.1-x86_64.AppImage

Звичайно, спочатку необхідно перейти у каталог, у який був завантажений файл AppImage, або записати у команді повний шлях до завантаженого файла.

  1. Запускаємо файл.

Це можна зробити через термінал, виконавши команду

teacher@teacher-VirtualBox:~/Завантаження$ sudo ./OpenShot-v2.4.1-x86_64.AppImage
Оскільки програмне забезпечення не встановлено, то немає необхідності деінсталювати його. Просто необхідно видалити пов’язаний з програмою файл AppImage, і програмне забезпечення буде видалено із системи.

При роботі з файлами формату AppImage є ряд особливостей.

  1. Інтеграція з робочим столом.

Коли відбувається запуск файла AppImage, може бути виданий запит, на зразок, Should a desktop file for /home/teacher/Завантаження/OpenShot-v2.4.1-x86_64.AppImage be installed? (встановити файл робочого столу).

Якщо обрати Так, встановлений додаток буде інтегровано у систему Linux, як звичайний встановлений додаток. Це означає, що програма буде доступна у списку програм при пошуку.

  1. Видалення файлів вручну.

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

  1. Зберігання файлів формату AppImage.

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

  1. Оновлення AppImage.

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

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

5.2.7. Flatpak-пакунки

Традиційний спосіб встановлення програм у Linux - завантаження та встановлення пакунків з репозиторіїв дистрибутива. Причому, формати пакунків, способи розгортання і навіть версії бібліотек для різних збірок дистрибутивів дуже відрізняються. Це не дозволяло завантажити програму з Інтернету і запускати її на будь-якому Linux-дистрибутиві.

Flatpack - це технологія портативних додатків, підтримуваних у будь-якому дистрибутиві, яка створена командою розробників GNOME. Flatpak пропонує систему для збирання самодостатніх пакунків для графічних додатків, які не прив’язані до конкретних дистрибутивів Linux і виконуються в спеціальному контейнері, який ізолює додаток від решти системи.

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

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

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

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

Перед тим, як встановлювати додатки з Flatpak, необхідно встановити сам Flatpak за допомогою термінала (Flatpak доступний для найбільш поширених дистрибутивів Linux). Встановимо Flatpak для Ubuntu.

Офіційний Flatpak PPA - рекомендований спосіб встановлення Flatpak. Тому для встановлення необхідно відкрити термінал Ctrl+Alt+T і ввести наступні команди

sudo add-apt-repository ppa:alexlarsson/flatpak
sudo apt install flatpak

Щоб встановлювати додатки без необхідності використання командного рядка, можна встановити плагін програмного забезпечення Flatpak

sudo apt install gnome-software-plugin-flatpak

Щоб мати можливість встановлювати додатки з Flathub , необхідно додати віддалений сервер (репозиторій) Flathub

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Після завершення встановлення, якщо відкрити додаток Ubuntu Software Ubuntu Software (Програми Ubuntu), буде запропоновано перезапустити додаток, для того щоб використовувати необхідні плагіни і почати користуватися встановленням додатків Flatpak.

Для прикладу, встановимо в Ubuntu за домогою Flatpak відеоредактор Pitivi.

Це можна зробити кількома способами.

  1. Через додаток Ubuntu Software Ubuntu Software (Програми Ubuntu), увівши в рядок пошуку фразу на зразок flatpak pitivi і слідуючи стандартним крокам встановлювача.

  2. Використати командний рядок, увівши у терміналі команди для встановлення додатку

flatpak install flathub org.pitivi.Pitivi

де flathub - сайт-репозиторій Flathub з додатками, а org.pitivi.Pitivi - це ідентифікатор додатку.

Команди встановлення/запуску можна переглянути на сторінці додатку Pitivi на сайті Flathub (аналогічно і для інших додатків).
  1. Встановити додаток можна локально за допомогою файла формату .flatpakref, встановивши його із каталогу, у який він був завантажений з Інтернету, наступною командою у терміналі

flatpak install org.pitivi.Pitivi.flatpakref
  1. Використати повний шлях до додатку із сайту Flathub

flatpak install --user https://flathub.org/repo/appstream/org.pitivi.Pitivi.flatpakref
Flatpak для системи і для користувача

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

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

За замовчуванням, команди Flatpak запускаються всередині системи. Якщо програми встановлюються для повсякденного використання, рекомендується дотримуватися цієї поведінки за замовчуванням.

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

Як тільки програма встановлена, її можна запустити за допомогою команди запуску та ідентифікатора програми

flatpak run org.pitivi.Pitivi

Щоб переглянути список програм та встановлених середовищ за допомогою Flatpak, виконайте у терміналі команду

flatpak list

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

teacher@teacher-VirtualBox:~/Завантаження$ flatpak list --app
Джерело                  Параметри
org.pitivi.Pitivi/x86_64/stable user,current
Напис user,current говорить про те, що додаток був встановлений для поточного користувача. У випадку встановлення додатку для усієї системи напис був би таким: system,current.

Програми Flatpak можна знайти в будь-якому з віддалених репозиторіїв, використовуючи команду пошуку search

teacher@teacher-VirtualBox:~/Завантаження$ flatpak search gimp
Ід. програми Версія Гілка Сховища Опис
org.gimp.GIMP          2.10.2       stable     flathub        Створення зображень та редагування фотографій

Щоб оновити всі встановлені програми до останньої версії, виконайте у терміналі

flatpak update

Для видалення додатку Flatpak необхідно у терміналі виконати команду

flatpak uninstall org.pitivi.Pitivi

5.2.8. Snap-пакунки

Snap - це новий формат пакунків програмного забезпечення, який вперше з’явився в Ubuntu 16.04. Саме Canonical представила нову систему встановлення і управління програмним забезпеченням, позиціонуючи її як більш стабільну і безпечну.

Snap-пакунок - це контейнер, в якому знаходиться додаток і його залежності.

Навіщо потрібні Snap-пакунки для встановлення програм, якщо є вже deb-пакунки?

Ще раз про пакунки і репозиторії

Відомо, що deb-пакунок являє собою інсталяційний пакунок тієї чи іншої програми (на зразок exe-пакунків для Windows), при встановленні якого підключаються необхідні залежності для повноцінної роботи програми.

Проте, deb-пакунки у Linux-системах віддалено нагадують собою пакунки exe для Windows, тому що exe-пакунки вже несуть в собі усі необхідні залежності пакунку, а deb-пакунки під час встановлення можуть використовувати залежності іншої програми, вже встановленої в системі.

Наприклад, якщо встановлюється deb-пакунок, скажімо, якогось мультимедійного плеєра, то під час його встановлення пакунок нового плеєра може використовувати залежності (звукові, відео та інші файли), іншого мультимедійного пакунку, вже встановленого раніше у системі. У Windows exe-пакунок вже містить усі необхідні залежності, тобто, залежності іншого пакунку, встановленого у системі, не використовуються, навіть, якщо вони ідентичні.

Для підтримки deb-пакунків створені спеціальні репозиторії (сховища), де зберігаються ці пакунки. Репозиторії бувають системні, створені розробниками дистрибутивів і сторонні, створені спеціально для підтримки того чи іншого додатку незалежними розробниками, якими можуть бути будь-які користувачі Linux.

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

У випадку, коли репозиторій якогось додатку, створений стороннім розробником, підтримувався лише до певної версії Ubuntu чи іншого похідного дистрибутива Linux, можуть виникнути труднощі встановлення такого додатку у нові дистрибутиви. Окрім того, для багатьох розробників проблематично випускати нові збірки пакунків для усіх нових версій програм і Linux-дистрибутивів.

Поширення Snap-пакунків покликане стандартизувати і допомогти програмістам випускати свої додатки для різних систем, не замислюючись про залежності. Іншими словами, один раз створений Snap-пакунок для того чи іншого додатку, може бути встановлений у будь-якому дистрибутиві Linux, що підтримує встановлення даних пакунків.

Крім того, додати підтримку встановлення Snap-пакунків в дистрибутив не складно. Це ні в якому разі не замінює інші керівники пакунків, а лише доповнює їх.

Список дистрибутивів, які підтримують встановлення додатків за допомогою Snap-пакунків, можна переглянути на сайті https://snapcraft.io . Ознайомитися з офіційною документацією Snap можна за адресою https://docs.snapcraft.io/core .

Щоб переглянути список доступних Snap-пакунків, у терміналі необхідно виконати команду

sudo snap find назва

де назва - це назва або частина назви програми.

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

teacher@teacher-VirtualBox:~$ sudo snap find "video player"
Назва                   Версія            Розробник    Примітки  Резюме
vlc                     3.0.1-4-g14a4897  videolan     -         The ultimate media player
movie-monad             0.0.6.1           lettier      -         A free and simple to use video player made with Haskell.
moonplayer              0.1               xiaoguo      -         Moonplayer
ktube-media-downloader  1                 keshavnrj    classic   Browser, Download, Play Media from Youtube and other Sites
screencloudplayer       1.3.6             screencloud  -         ScreenCloud Player
mpv-casept              0.24.0            casept       -         DEPRECEATED. USE THE mpv SNAP INSTEAD.
minidlna-escoand        1.2.1snap1        escoand      -         server software with the aim of being fully compliant with DLNA/UPnP clients.
asciinema               1.4.0             sabdfl       classic   Record and share your terminal sessions, the right way
deerportal              0.7.3-pre-snap    bluszcz      -         A  multiplayer board game driven by the four classical elements and the almighty Deer God

У загальному вигляді команда встановлення Snap-пакунку виглядає наступним чином

sudo snap install ім'я_пакунку

Дізнатися імена пакунків можна у таблиці результатів пошуку Snap-пакунків за допомогою команди find у колонці Назва - це і є імена пакунків.

Для прикладу, встановимо програму hello-world, яка виводить однойменне повідомлення, за допомогою Snap

teacher@teacher-VirtualBox:~$ sudo snap find "hello-world"
Назва                     Версія  Розробник  Примітки  Резюме
hello-world               6.3     canonical  -         The 'hello-world' of snaps
hello-world-om26er        0.2     om26er     -         A great snap
test-snapd-hello-classic  1.0     canonical  classic   A hello-world with classic confinement
hello-lhc                 1.0     cprov      -         Hello world application for LHC☂
teacher@teacher-VirtualBox:~$ sudo snap install hello-world
hello-world 6.3 з «canonical» встановлено
teacher@teacher-VirtualBox:~$ hello-world
Hello World!

Щоб відобразити список усіх встановлених Snap-пакунків в систему, необхідно ввести у терміналі наступну команду

teacher@teacher-VirtualBox:~$ snap list
Назва                 Версія     Ред   Відстеження  Розробник  Примітки
core                  16-2.32.8  4650  stable       canonical  core
gnome-3-26-1604       3.26.0     64    stable/…     canonical  -
gnome-calculator      3.28.1     167   stable/…     canonical  -
gnome-characters      3.28.0     86    stable/…     canonical  -
gnome-logs            3.28.0     31    stable/…     canonical  -
gnome-system-monitor  3.26.0     39    stable/…     canonical  -
hello-world           6.3        27    stable       canonical  -
organize-my-files     2.5.0      4     stable       qiplex     -

Для оновлення встановлених Snap-пакунків використовують команду

teacher@teacher-VirtualBox:~$ sudo snap refresh
Всі snap-пакунки актуальні.

а для оновлення якогось конкретного пакунку наступний формат команди

sudo snap refresh ім'я_пакунку

Для видалення Snap-пакунків користуються таким синтаксисом

sudo snap remove ім'я_пакунку

Встановлені Snap-пакунки можна вимикати (вони не будуть оновлюватися) і вмикати, виконуючи, відповідно, команди

teacher@teacher-VirtualBox:~$ sudo snap disable hello-world
hello-world вимкнено
teacher@teacher-VirtualBox:~$ sudo snap enable hello-world
hello-world увімкнено

Встановлення Snap-пакунків можна виконувати не лише за допомогою термінала. Підтримка Snap-пакунків включена в додаток Ubuntu Software Ubuntu Software (Програми Ubuntu).

https://uappexplorer.com/snaps - неофіційний магазин Snap-додатків.

5.3. Додаткові налаштування

5.3.1. Ubuntu Restricted Extras (мультимедіа, шрифти)

Для відтворення найбільш популярних мультимедійних форматів (MP3, MPEG4, AVI та ряду інших), додавання шрифтів Microsoft (Arial, Verdana, Georgia та інших) необхідно встановити пакунок Ubuntu Restricted Extras.

Для цього у терміналі (Ctrl+Alt+T) необхідно виконати наступну команду

sudo apt install ubuntu-restricted-extras

Під час встановлення шрифтів з даного пакунку з’являється повідомлення ліцензії

Пакунок Ubuntu Restricted Extras
Пакунок Ubuntu Restricted Extras

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

Пакунок Ubuntu Restricted Extras
Пакунок Ubuntu Restricted Extras

Таким же чином, стрілками клавіатури вибираємо варіант Так, натискаємо клавішу Enter і чекаємо завершення встановлення.

5.3.2. Додаткові архівні формати

В системі Ubuntu вже присутній менеджер архівів, який підтримує ряд архівних форматів (zip, gzip та інших), додатково його встановлювати не потрібно

Менеджер архівів в Ubuntu
Додаток Менеджер архівів в Ubuntu

Після встановлення додаткових архіваторів у систему даний менеджер архівів побачить нові формати. Для цього необхідно виконати у терміналі наступну команду

sudo apt install p7zip-rar rar unrar unace arj cabextract

5.3.3. Gnome Tweak Tool (гнучке налаштування)

В Ubuntu із середовищем робочого столу GNOME вже є інструмент налаштувань, який називається Параметри, і його можна знайти за допомогою пошуку у списку додатків

Налаштування параметрів в Ubuntu
Додаток Параметри в Ubuntu

Даний додаток містить величезну кількість налаштувань системи

Налаштування параметрів в Ubuntu
Додаток Параметри в Ubuntu

Для більш детального налаштування системи можна встановити Gnome Tweak Tool - програму для гнучкого налаштування середовища робочого столу GNOME, що розробляється і підтримується GNOME Foundation .

Цей додаток встановлюється за допомогою такої команди в терміналі

sudo apt install gnome-tweak-tool

У списку додатків даний додаток можна знайти так

Налаштування параметрів в Ubuntu
Пошук додатку Коригування в Ubuntu

Після запуску вікно додатку Коригування має такий вигляд

Налаштування параметрів в Ubuntu
Вигляд вікна додатку Коригування в Ubuntu

Alacarte - редактор меню встановлених додатків Утиліта Показати програми в Ubuntu для робочого середовища GNOME. Встановити додаток можна через термінал командою

sudo apt install alacarte

5.3.5. dconf (налаштування встановлених програм)

dconf - система конфігурації, яка основана на ключах і за допомогою якої у GNOME зберігаються налаштування більшості програм. Для того, щоб встановити редактор dconf, необхідно відкрити термінал та виконати наступну команду

sudo apt install dconf-tools

Після встановлення редактора у списку додатків його можна знайти так

Налаштування параметрів в Ubuntu
Пошук додатку Редактор dconf в Ubuntu

Як використовувати редактор dconf?

Наприклад, необхідно перемістити значок Утиліта Показати програми в Ubuntu у верхню частину панелі обраних додатків.

Панель обраних додатків, панель швидкого запуску, панель задач - це різні назви однієї панелі.

Для цього треба відкрити редактор dconf, ввести в пошук show-apps-at-top і натиснути клавішу Enter

Налаштування параметрів в Ubuntu
Редактор dconf в Ubuntu: ключ show-apps-at-top

Далі перемістити в даному параметрі перемикач, натиснути кнопку True, підтвердити виконані кроки і значок Утиліта Показати програми в Ubuntu відразу повинен переміститься у верхню частину панелі

Значок Показати програми в Ubuntu
Панель обраних додатків (панель швидкого запуску, панель задач) в Ubuntu: значок Показати програми знаходиться вгорі

5.3.6. GParted (редактор дискових розділів)

GParted (GNOME Partition editor) - редактор дискових розділів, що використовується для різних операцій з розділами (створення, видалення, зміни розміру, переміщення, перевірки, копіювання й призначення мітки «завантажувальний») та розміщеними на них файловими системами (призначення їх типу, тобто, форматування).

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

Програма GParted в Ubuntu
Програма GParted в Ubuntu

Для встановлення GParted в Ubuntu у терміналі необхідно виконати команду

sudo apt install gparted

5.4. Створення ярликів для програм

В Ubuntu будь-яку встановлену у систему програму можна відкрити через кнопку Показати програми Утиліта Показати програми в Ubuntu, що розташована на панелі обраних додатків. Увівши у рядок пошуку назву програми (або частину її назви), ярлик запуску програми з’явиться у списку.

Ярлики встановлених додатків зберігаються у двох каталогах, один з яких системний - /usr/share/applications, а інший знаходиться у каталозі кожного з користувачів системи за адресою ~/.local/share/applications/.

Ярлики представляють із себе текстові файли з розширенням .desktop

teacher@teacher-VirtualBox:~$ cd /usr/share/applications
teacher@teacher-VirtualBox:/usr/share/applications$ ls
alacarte.desktop
apport-gtk.desktop
apturl.desktop
audacity.desktop
blender.desktop
...

А самі текстові файли мають схожу структуру, як на зразку

teacher@teacher-VirtualBox:/usr/share/applications$ cat sublime_text.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Sublime Text
GenericName=Text Editor
Comment=Sophisticated text editor for code, markup and prose
Exec=/opt/sublime_text/sublime_text %F
Terminal=false
MimeType=text/plain;
Icon=sublime-text
Categories=TextEditor;Development;
StartupNotify=true
Actions=Window;Document;

[Desktop Action Window]
Name=New Window
Exec=/opt/sublime_text/sublime_text -n
OnlyShowIn=Unity;

[Desktop Action Document]
Name=New File
Exec=/opt/sublime_text/sublime_text --command new_file
OnlyShowIn=Unity;

Ось кілька важливих параметрів, які часто використовуються

Name

ім’я додатку, яке відображається під значком у списку встановлених програм (обов’язковий);

Exec

рядок запуску додатку (обов’язковий);

Terminal

запускати (True) чи ні (False) додаток у вікні термінала;

Icon

загальносистемна назва значка програми.

Параметр запуску Exec додатків можна редагувати за допомогою контекстного меню у файловому менеджері Nautilus, обравши по черзі пункти Властивості  Основні  Команда

Властивості ярлика Sublime Text
Властивості ярлика Sublime Text
Якщо редагувати властивості ярлика у системному каталозі, то файловий менеджер треба запускати з правами суперкористувача за допомогою команди sudo.

Для створення ярликів використаємо утиліту gnome-desktop-item-edit, що входить в пакунок gnome-panel, який можна встановити командою

sudo apt install --no-install-recommends gnome-panel

Опція --no-install-recommends означає, що встановиться лише пакунок gnome-panel без додаткових пакунків.

А тепер створимо ярлик для запуску якогось додатку для поточного користувача, виконавши у терміналі команду

gnome-desktop-item-edit ~/.local/share/applications --create-new

У вікні, що з’явилося, у рядку Назва: можна вказати назву ярлика

Створення ярлика запуску програми
Створення ярлика запуску програми

Далі, у рядку Команда: через кнопку Огляд, можна обрати виконуваний файл програми (щоб не вводити шлях до файла вручну).

Щоб знайти шлях до встановленої програми у терміналі використовуйте вже відомі команди which або whereis з назвою програми, наприклад, так

teacher@teacher-VirtualBox:~$ which geany
/usr/bin/geany
teacher@teacher-VirtualBox:~$ whereis geany
geany: /usr/bin/geany /usr/lib/x86_64-linux-gnu/geany /usr/include/geany /usr/share/geany /usr/share/man/man1/geany.1.gz

У даному випадку, в рядку Команда: необхідно вписати шлях /usr/bin/geany для запуску додатку Geany.

За потреби, також можна написати коментар, а клікнувши у вікні на значку програми (зліва від текстових полів), можна змінити значок на інший.

Після натискання на кнопку OK, у списку додатків отримаємо відповідний ярлик для запуску програми для поточного користувача.

Якщо необхідно створити ярлик програми у системному каталозі, то потрібно буде виконувати команду з правами суперкористувача і відповідним шляхом /usr/share/applications

sudo gnome-desktop-item-edit /usr/share/applications --create-new
Ярлики, створені такими способами, можна скопіювати на робочий стіл і запускати програми через них.

5.5. Планувальник завдань

Дуже часто у Linux виникає необхідність автоматизувати виконання власних користувацьких задач з адміністрування системи.

Для автоматизації процесу виконання певних задач користувачів за розкладом у систему Ubuntu інтегрована програма cron.

cron - програма-демон, призначена для виконання завдань у певний час, або через певні проміжки часу.

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

Кожен користувач системи має свій файл завдань crontab (cron табулятор), в якому описано, в який час і які команди і програми запускати від імені цього користувача.

Для редагування файла crontab використовується спеціальна однойменна команда crontab, яка дозволяє не переривати процес cron на час редагування за допомогою наступних команд:

  • -e - команда запуску файла crontab для його редагування (від англ. edit);

  • -l - команда запуску файла для перегляду його вмісту (від англ. list);

  • -r - видалити файл crontab для поточного користувача (видалити свій crontab) (від англ. remove).

Кожний рядок у файлі crontab складається з п’яти колонок, що відокремлюються пропусками чи табуляціями. Кожна колонка задає час виконання:

  • хвилина;

  • година;

  • день;

  • місяць;

  • день тижня.

# .---------------- хвилина (0 - 59)
# |  .------------- година (0 - 23)
# |  |  .---------- день місяця (1 - 31)
# |  |  |  .------- місяць (1 - 12) АБО jan,feb,mar,apr ...
# |  |  |  |  .---- день тижня (0 - 6) (неділя=0 чи 7) АБО sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
  *  *  *  *  *  виконувана команда

Значення цих колонок можуть містити число, список чисел, або символ . Решта символів в рядку інтерпретуються як виконувана команда та її параметри.

Значення колонок файла crontab можна генерувати за допомогою редактора для виразів розкладу crontab.guru .

Створимо завдання для запуску програми ucaresystem-core кожної неділі о 23 годині.

Відкриємо файл crontab (при першому запуску необхідно обрати редактор для редагування файла), виконавши у терміналі команду

sudo crontab -e

і запишемо у кінець файла наступний рядок

0 23 * * 7 /usr/bin/ucaresystem-core

5.6. Автозавантаження програм

Необхідність автоматичного завантаження деяких додатків при завантаженні системи виникає досить часто.

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

Програма Початкові програми в Ubuntu
Програма Початкові програми в Ubuntu

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

Для додавання своєї програми в автозапуск необхідно натиснути кнопку Додати

Налаштування програм автозапуску в Ubuntu
Налаштування програм автозапуску в Ubuntu

Поля Назва: та Коментар: можна заповнити на власний розсуд, а в поле Команда: необхідно записати команду для запуску додатку або вибрати шлях до програми, використавши кнопку Огляд….

У випадку, якщо ви не знаєте де знайти програму або як пишеться її команда, можна використати утиліту Головне меню, відшукавши її у списку додатків системи

Запуск програми Головне меню в Ubuntu
Запуск програми Головне меню в Ubuntu

Далі, знайдіть у списку програм потрібний додаток і натисніть кнопку Властивості

Категорії додатків у програмі Головне меню в Ubuntu
Категорії додатків у програмі Головне меню в Ubuntu

Тепер просто скопіюйте значення поля Команда: (Command:)

Команда запуску додатка Geany в Ubuntu
Команда запуску додатка Geany в Ubuntu

у програму налаштування автозапуску.

5.7. Оновлення програмного забезпечення і системи

Розробка Ubuntu відбувається так, що нові версії програм поширюються тільки з релізом дистрибутива, а потім приходять тільки оновлення, які виправляють баги і проблеми з безпекою, актуалізують системні пакунки, які часто потрібні як залежності для встановлення сторонніх програм.

Оновлювати програмне забезпечення системи Ubuntu необхідно не тільки після того, як щойно її встановили на свій комп’ютер, а й періодично.

Крім того, якщо ви хочете також мати найновіші версії програмного забезпечення, то можете використовувати PPA-репозиторії розробників і встановлювати програми звідти. Як правило, у PPA-репозиторії розробники завжди завантажують найновіші версії.

Актуалізувати/оновити програмне забезпечення можна як через термінал, так і у графічному режимі.

В Ubuntu передбачений механізм оновлення через додаток Оновлення програм.

Це програма з графічним інтерфейсом, яка запускається час від часу і пропонує оновити систему, якщо були випущені нові оновлення. Даний керівник оновлень Ubuntu досить простий і його можна запустити через Утиліта Показати програми в Ubuntu

Оновлення програм в Ubuntu
Додаток Оновлення програм в Ubuntu

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

Оновлення програм в Ubuntu
Оновлення програм в Ubuntu: пошук оновлень

Після чого відкриється вікно Оновлення програм

Оновлення програм в Ubuntu
Встановлення оновлень програм в Ubuntu
Розкривши список Деталі оновлень, можна переглянути список оновлень, а також відзначити пункти навпроти деяких пакунків, які не потрібно оновлювати.
Оновлення програм в Ubuntu
Деталі оновлень програм в Ubuntu

Щоб повністю оновити програмне забезпечення системи, потрібно натиснути Встановити зараз.

Для оновлення програмного забезпечення через термінал можна скористатися керівником пакунків apt.

Для цього необхідно виконати кілька команд.

sudo apt update

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

sudo apt list --upgradable

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

sudo apt upgrade

оновлює пакунки, які вже встановлені в системі і встановлює нові пакунки-залежності, а інша команда

sudo apt full-upgrade

оновлює пакунки, які вже встановлені в системі, встановлює нові пакунки-залежності і видаляє пакунки, які встановлювалися в систему і вже не використовуються.

Виконання команд у терміналі можна об’єднувати. Наприклад, у нашому випадку оновлення пакунків можна записати так

sudo apt update && sudo apt upgrade

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

Програмне забезпечення та оновлення в Ubuntu
Додаток Програмне забезпечення та оновлення в Ubuntu

Далі необхідно перейти на вкладку Програмне забезпечення Ubuntu і обрати сервер завантажень оновлень

Зміна серверу завантаження оновлень в Ubuntu
Додаток Програмне забезпечення та оновлення в Ubuntu: зміна серверу завантаження оновлень

Також варто підключити репозиторії партнерів Canonical (за замовчуванням, ці репозиторії не підключені в систему). В даних репозиторіях міститься програмне забезпечення компаній-партнерів Canonical. Ці репозиторії потрібні для оновлення в Ubuntu додатків із закритим вихідним кодом

Сховища партнерів Canonical в Ubuntu
Додаток Програмне забезпечення та оновлення в Ubuntu: репозиторії партнерів Canonical та додані репозиторії

Стандартні налаштування отримання оновлень можна змінити на вкладці Оновлення

Програмне забезпечення та оновлення в Ubuntu
Додаток Програмне забезпечення та оновлення в Ubuntu: налаштування розкладу оновлень
Оновлення системи - це процес переходу з попереднього випуску до більш нового випуску операційної системи. Таким прикладом є перехід з версії Ubuntu 17.10 (Artful Aardvark) на версію Ubuntu 18.04 LTS (Bionic Beaver).
Для перевірки версії дистрибутива встановленої системи, використовуйте у терміналі команду lsb_release -a.

Для оновлення системи до новішої версії необхідно на вкладці Оновлення увімкнути опцію Повідомляти мене про нові версії (для будь-якої нової версії чи для версій з довгим терміном підтримки) і у терміналі виконати команду по запуску керівника оновлень з ключем -c (для перевірки наявності нового релізу дистрибутива)

sudo update-manager -c

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

sudo update-manager -d

Після цього погодитись із оновленням системи та дотримуватись вказівок на екрані.

При оновленні Ubuntu з підключеними сторонніми PPA-репозиторіями можуть виникати помилки. Тому перед оновленням версії дистрибутива рекомендується такі репозиторії тимчасово відключити.

6. Програмне забезпечення

У цьому розділі підручника описані різні способи встановлення типового програмного забезпечення для вирішення багатьох повсякденних і навчальних задач в Ubuntu.

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

6.1. Браузери

Популярний безкоштовний браузер Mozilla Firefox , створений компанією Mozilla Foundation, входить в стандартний набір попередньо встановлених додатків в Ubuntu.

Виконаємо встановлення в Ubuntu іншого популярного безкоштовного браузера Google Chrome , розробленого Google Inc.

Існує два офіційних способи встановлення браузера Chrome:

  • використовування репозиторію Google Chrome PPA;

  • безпосереднє завантажування та встановлення пакунків .deb.

6.1.1. Встановлення Google Chrome з використанням PPA

  1. Використаємо офіційний репозиторій (PPA) програмного забезпечення Google, який буде автоматично встановлювати і налаштовувати параметри, необхідні для оновлення браузера Chrome.

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

У системах на базі Debian (Ubuntu, Linux Mint і т.д.) використовуйте команду wget для завантаження ключа, а потім використовуйте apt-key, щоб додати його в систему

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
  1. Після додавання ключа необхідно виконати наступну команду, щоб додати Chrome-репозиторій у власні системні джерела програмного забезпечення

sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
  1. Після додавання Chrome-сховища необхідно оновити програмне забезпечення системи. Для оновлення доданого Chrome-репозиторія, використовують наступну команду

sudo apt update
  1. На цьому кроці обираємо встановлення стабільної версії браузера

sudo apt install google-chrome-stable

6.1.2. Встановлення Google Chrome з використанням пакунків .deb

  1. Перейдіть на сторінку завантаження Google Chrome і виберіть відповідний пакунок, або використайте наступну команду wget для завантаження (1) і встановлення (2) останньої версії

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb (1)
sudo dpkg -i google-chrome-stable_current_amd64.deb (2)
  1. Після встановлення, Google Chrome можна запустити з використанням термінала наступною командою

google-chrome-stable

6.1.3. Видалення Google Chrome

Щоб видалити браузер, використовуйте наступну команду

sudo apt remove google-chrome-stable

6.2. JRE

JRE - середовище виконання для Java , яке використовується у різному програмному забезпеченні для виконання Java-додатків. Для встановлення середовища віртуальної машини в Ubuntu використаємо наступні команди у терміналі

sudo apt update
sudo apt install default-jre

6.3. Adobe Flash Player

Flash Player - це розширення (плагін) для веб-браузера, що дозволяє переглядати відео та використовувати інтерактивні веб-сторінки. Хоча HTML5, як більш сучасне рішення, отримує все більше розповсюдження, все ще є деякі веб-сайти, які не можуть працювати без Flash Player.

Якщо Flash Player не встановлений, то, вірогідно, при відвідуванні веб-сторінки, що використовує цю технологію, буде показано повідомлення про це. Flash можна завантажити безкоштовно для більшості веб-браузерів (але це не програма з відкритим вихідним кодом).

Компанія Adobe заявила, що оновлення та розповсюдження Flash Player припиниться наприкінці 2020 року.

Доступно два типи розширень для браузерів:

  1. NPAPI для Firefox та інших браузерів на движку Gecko.

  2. PPAPI для Chromium та інших, побудованих на движку Blink, браузерів, включаючи Opera і Vivaldi.

В браузер Google Chrome вже інтегрований плагін Adobe Flash і розширення для нього не потрібно встановлювати.

Для встановлення плагіна у Firefox необхідно виконати у терміналі команду

sudo apt install flashplugin-installer

і перезапустити браузер.

Після встановлення вищезазначеного пакунку Flash Player запустіть (перезавантажте, якщо вже відкрито) браузер Firefox і перейдіть на сайт Flash Player Help , щоб протестувати установку Flash Player.
У разі виникнення труднощів у встановленні Flash PLayer зверніться до офіційної документації Ubuntu.
Для перегляду локальних flash-файлів можна використовувати Flash Player Projector .

6.4. Office і видавничі системи

6.4.1. LibreOffice

LibreOffice - кроcплатформовий офісний пакунок, вільний аналог Microsoft Office. Перекладений багатьма мовами світу, в тому числі і українською. Підтримує більшість популярних операційних систем, включаючи GNU/Linux.

LibreOffice безкоштовний як для приватного, так і для освітнього або комерційного використання. Може використовуватися без будь-яких ліцензійних зборів будь-ким.

Основним форматом файла LibreOffice є відкритий формат офісних документів OpenDocument. Окрім того, LibreOffice підтримує формати Microsoft Office та інших офісних пакунків для досягнення максимальної сумісності.

LibreOffice є офісним пакунком, вбудованим в Ubuntu за замовчуванням.

6.4.2. WPS Office

WPS Office (абревіатура для Writer, Presentation і Spreadsheets, відомий також раніше як Kingsoft Office) - проект, який створений китайськими розробниками і розвивається як аналог офісного пакунку MS Office, написаний на Qt і націлений на роботу в Microsoft Windows, MacOS, Linux, iOS та Android.

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

WPS Office поширюється як безкоштовно, так і за підпискою:

  • Персональна базова версія безкоштовна.

  • Повнофункціональна версія професійного класу доступна за передплату.

Головна перевага перед LibreOffice та Google Docs - звичний для користувачів MS Office інтерфейс, який дозволяє спростити перехід користувачів на новий пакунок, та майже 100% суміснісний з форматами MS Office.

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

Використання формату документів ODF потребує встановлення додаткового розширення.

Станом на 2019 рік версію для Linux розробляє та підтримує волонтерська спільнота, а не сам Kingsoft.

Для встановлення WPS Office у систему Linux Ubuntu слід виконати наступні кроки:

  1. Завантажити версію відповідної розрядності із сайту http://wps-community.org/downloads і зберегти в окремий каталог.

  2. Встановити завантажений пакунок. Для цього відкрити вікно терміналу у каталозі, де був збережений завантажений deb-пакунок і виконати команду, на зразок:

sudo dpkg -i wps-office_11.1.0.8865_amd64.deb
  1. Інтерфейс українською.

    1. Завантажити архів uk_UA.7z з файлами локалізації і розпакувати в окремий каталог.

    2. Використовуючи термінал, скопіювати каталог uk_UA з файлами локалізації інтерфейсу по шляху:

sudo cp -rax uk_UA/ /opt/kingsoft/wps-office/office6/mui/
  1. Локалізація стартової сторінки.

    1. Створити окремий каталог uk_UA для файла локалізації стартової сторінки WPS Office.

    2. Завантажити файл локалізації kstartpage.qm у створений каталог uk_UA.

    3. Використовуючи термінал, скопіювати каталог uk_UA з файлом локалізації kstartpage.qm по шляху:

sudo cp -rax uk_UA/ /opt/kingsoft/wps-office/office6/addons/kstartpage/mui/
  1. Український словник для перевірки правопису.

    1. Завантажити архів uk_UA.zip словника і розпакувати в окремий каталог.

    2. Використовуючи термінал, скопіювати каталог uk_UA з файлами словника по шляху:

sudo cp -rax uk_UA/ /opt/kingsoft/wps-office/office6/dicts/spellcheck/
  1. Перезапустити офіс і обрати мову в правому куті стартової сторінки вікна програми.

    1. Натиснути літеру A на стрічці.

    2. Скинути позначку у пункті Дотримуватися мови системи.

    3. Обрати мову.

    4. Перезапустити WPS Office.

6.4.3. Scribus

Scribus - це видавнича система і програма для створення публікацій, яка дозволяє створювати плакати, журнали та книги. Scribus підтримує основні типи текстових та графічних файлів, колірну схему CMYK і може використовуватися для створення макету сторінок та підготовки файлів для друку, створення PDF-файлів.

Видавнича система Scribus
Видавнича система Scribus

Існують версії програми для різних систем, в тому числі, і для Linux, зокрема, Ubuntu. Позиціонується як відкрита та безкоштовна альтернатива видавничим системам QuarkXPress та Adobe InDesign .

Для встановлення останньої версії програми Scribus можна скористатися додатком Ubuntu Software (Програми Ubuntu).

6.5. Мультимедіа

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

6.5.1. Графічні редактори

Растровий редактор Pinta

Pinta - простий у використанні, легкий растровий графічний редактор.

Графічний растровий редактор Pinta
Графічний растровий редактор Pinta
Остання версія графічного редактора (1.6) вийшла 1 березня 2015 року.

Для встановлення редактора Pinta слід виконати у терміналі команди

sudo apt install pinta

Для видалення графічного редактора Pinta із системи Ubuntu у терміналі необхідно виконати команди

sudo apt remove pinta
sudo apt autoremove
Растровий редактор Dibuja

Dibuja - растровий графічний редактор, який є функціональним аналогом класичного MS Paint (Windows) і Paintbrush (Mac OS). Даний редактор можна використовувати для швидкого і легкого редагування зображень і створення простих малюнків.

Графічний растровий редактор Dibuja
Графічний растровий редактор Dibuja

Для встановлення редактора завантажте deb-пакунок із сайта Dibuja , відкрийте термінал із каталогу, у який був завантажений пакунок, і виконайте команду

sudo dpkg -i dibuja_0.8.0-0_amd64.deb
Растровий редактор GIMP

GIMP (The GNU Image Manipulation Program) - безкоштовний растровий графічний редактор, із підтримкою векторної графіки.

Символом GIMP є койот Вілбер (Wilber). Програма працює у різних системах, зокрема, і в Linux.

Графічний растровий редактор GIMP
Графічний растровий редактор GIMP

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

GIMP доступний в офіційному репозиторії Ubuntu. Для того, щоб встановити GIMP, виконайте в терміналі наступну команду

sudo apt install gimp

або встановіть пакунок через додаток Ubuntu Software (Програми Ubuntu).

В офіційних репозиторіях не завжди знаходиться остання версія. Тому для встановлення актуальної версії можна використати сховище PPA, виконавши у терміналі наступні команди

sudo add-apt-repository ppa:otto-kesselgulasch/gimp
sudo apt install gimp
Векторний редактор Inkscape

Inkscape - вільний редактор векторної графіки з можливостями, подібними до можливостей Illustrator, CorelDraw.

Рідним форматом Inkscape є SVG , окрім того, редактор підтримує читання і запис зображення у форматах OpenDocument Drawing, DXF, PNG, WMF, PDF, EPS та інших.

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

Графічний векторний редактор Inkscape
Графічний векторний редактор Inkscape

Для встановлення актуальної версії використайте наступні команди у терміналі

sudo add-apt-repository ppa:inkscape.dev/stable
sudo apt install inkscape

6.5.2. Плеєри

Rhyntmbox

Rhythmbox - вільний аудіопрогравач і каталогізатор для графічного середовища GNOME. Призначений для зручного прослуховування музики, впорядкування музичної колекції, здатний програвати усі поширені аудіоформати.

Аудіоплеер Rhythmbox використовується за замовчуванням в дистрибутиві Ubuntu.
SMPlayer

SMPlayer - це один з найпростіших мультимедійних плеєрів для Linux. Програма встановлюється з вбудованими кодеками, і готова відкрити усі популярні формати з коробки.

Мультимедійний плеєр SMPlayer
Мультимедійний плеєр SMPlayer

Щоб встановити SMPlayer, виконайте у терміналі наступні команди

sudo add-apt-repository ppa:rvm/smplayer
sudo apt install smplayer smplayer-themes

Для видалення програми SMPlayer виконайте у терміналі команди

sudo add-apt-repository --remove ppa:rvm/smplayer
sudo apt remove smplayer

6.5.3. Аудіоредактори

Audacity

Audacity - вільний багатоплатформовий редактор звукових файлів, орієнтований на роботу з декількома доріжками. Дозволяє виконувати такі функції, як редагування звукових файлів (Ogg Vorbis, FLAC, MP3 і WAV), запис, оцифрування звуку, зміна параметрів звукового файла, накладення треків і застосування ефектів (наприклад, приглушення шуму, зміна темпу і тону).

Аудіоредактор Audacity
Аудіоредактор Audacity

Щоб встановити Audacity, виконайте у терміналі наступні команди

sudo add-apt-repository ppa:ubuntuhandbook1/audacity
sudo apt install audacity

Щоб видалити програму Audacity, використовуйте команду

sudo apt remove --autoremove audacity audacity-data

6.5.4. Відеоредактори

Kdenlive

Kdenlive - вільна система нелінійного відеомонтажу початкового рівня.

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

Відеоредактор Kdenlive
Відеоредактор Kdenlive

Для встановлення відеоредактора Kdenlive в Ubuntu використаємо сховище PPA і наступні команди

sudo add-apt-repository ppa:kdenlive/kdenlive-stable
sudo apt install kdenlive

Для видалення Kdenlive використайте у терміналі наступну команду

sudo apt remove --autoremove kdenlive

6.5.5. 3D-редактори

Sweet Home 3D

Sweet Home 3D - безкоштовний Java-застосунок дизайну інтер’єру з швидким вибором та розміщенням меблів у 2D-плані будинку з можливістю 3D-перегляду.

Створення дизайну інтер’єру у Sweet Home 3D
Створення дизайну інтер’єру у Sweet Home 3D
Для встановлення програми Sweet Home 3D можна скористатися додатком Ubuntu Software (Програми Ubuntu).
Blender 3D

Blender - безкоштовний пакунок для створення тривимірної комп’ютерної графіки, що включає в себе засоби моделювання, анімації, рендеринга, постобробки відео, а також для створення ігор. Один з найпопулярніших 3D-графічних додатків у світі з відкритим вихідним кодом.

Редактор тривимірної графіки Blender
Редактор тривимірної графіки Blender

Для встановлення нової версії редактора скористаємося PPA-репозиторієм. У вікні термінала виконаємо команди

sudo add-apt-repository ppa:thomas-schiex/blender
sudo get install blender

6.5.6. Інтелектуальні карти

Freeplane

Freeplane є вільною програмою з відкритим початковим кодом для створення інтелектуальних карт (діаграм зв’язків між ідеями).

Редактор інтелектуальних карт Freeplane
Редактор інтелектуальних карт Freeplane

Для встановлення Freeplane можна виконати такі кроки.

  1. Перейти для завантаження .deb-пакунку програми на сайт http://sourceforge.net/projects/freeplane/ .

  2. Завантажити пакунок freeplane_<версія>_upstream-1_all.deb.

  3. У терміналі перейти у каталог, в який завантажили пакунок, і виконати команду для встановлення програми

sudo dpkg -i freeplane_<версія>_upstream-1_all.deb

6.6. Файлові менеджери

6.6.1. Gnome Commander

GNOME Commander - файловий менеджер з графічним інтерфейсом, з двома панелями для робочого столу Linux, який використовує бібліотеки GNOME. Програма спрямована на ефективне керування файлами та каталогами у системі.

Файловий менеджер Gnome Commander
Файловий менеджер Gnome Commander

Для встановлення програми виконайте у терміналі команду

sudo apt install gnome-commander

Для видалення файлового менеджера скористайтеся сполученням наступних команд

sudo apt purge gnome-commander && sudo apt autoremove

6.7. Навчальні програми

6.7.1. GCompris

GCompris - комплекс навчального програмного забезпечення, що складається з багатьох вправ для дітей від 2 до 10 років, які є ігровими і містять елементи навчання.

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

Навчальне програмне забезпечення GCompris
Навчальне програмне забезпечення GCompris
Для встановлення останньої версії програми GCompris можна скористатися додатком Ubuntu Software (Програми Ubuntu).

6.8. Системи програмування

6.8.1. Lazarus

Lazarus - вільне середовище розробки програмного забезпечення для компілятора Free Pascal Compiler. Інтегроване середовище розробки надає можливість багатоплатформової розробки застосунків в Delphi-подібному оточенні.

Середовище програмування Lazarus
Середовище програмування Lazarus

Для встановлення Lazarus в Ubuntu необхідно виконати кілька кроків.

  1. Завантажити deb-пакунки із офіційного сайту відповідної розрядності, наприклад, 64-бітні:

    1. fpc-src_3.0.4-2_amd64.deb

    2. fpc_3.0.4-2_amd64.deb

    3. lazarus-project_1.8.2-0_amd64.deb

  2. Встановити завантажені пакунки в такому порядку, як показано у списку вище, за допомогою, наприклад, утиліти dpkg. Для цього у терміналі необхідно виконати подану нижче команду три рази (кожен раз з новою назвою пакунку)

sudo dpkg -i назва_пакунку.deb

У разі появи помилок при встановленні пакунків (іноді, при роботі з керівниками пакунків, виникає проблема з невирішеними залежностями пакунків) виконайте у терміналі команду

sudo apt -f install
Ще одним способом встановлення програми є використання керівника пакунків Synaptic.

6.8.2. Geany

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

Текстовий редактор Geany
Текстовий редактор Geany

Для встановлення Geany в Ubuntu використаємо сховище PPA і наступні команди у терміналі

sudo add-apt-repository ppa:geany-dev/ppa
sudo apt install geany
sudo apt install geany-plugins

6.8.3. Sublime Text

Sublime Text 3 - швидкий кросплатформовий редактор вихідних текстів програм. Підтримує плагіни, розроблені за допомогою мови програмування Python.

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

Редактор можна використовувати вільно, хоча, час від часу, з’являється повідомлення про придбання ліцензії і у рядку заголовка програми присутній напис UNREGISTERED

Текстовий редактор Sublime Text
Текстовий редактор Sublime Text

Для встановлення Sublime Text в Ubuntu необхідно виконати кілька кроків.

  1. Встановити ключ GPG

wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
  1. Переконатися, що apt створено для роботи з джерелами https

sudo apt install apt-transport-https
  1. Вибрати канал для використання стабільної версії програми

echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
  1. Оновити джерела програмного забезпечення та встановити Sublime Text

sudo apt update
sudo apt install sublime-text

7. Мережа

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

7.1. IP-адреси та імена комп’ютерів

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

Щоб дізнатися IP-адресу комп’ютера у локальній мережі, використовують одну з команд:

  • ip addr show;

  • hostname -I.

Інформація про усі мережеві підключення на даному комп’ютері, в результаті виконання поданих команд у терміналі, може буде такою

teacher@teacher-VirtualBox:~$ hostname -I
192.168.1.5 (1)
teacher@teacher-VirtualBox:~$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo (2)
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:47:51:82 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.5/24 brd 192.168.1.255 scope global dynamic noprefixroute enp0s3 (3)
       valid_lft 6830sec preferred_lft 6830sec
    inet6 fe80::75a3:fcf1:3301:5d4a/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
teacher@teacher-VirtualBox:~$
  1. Результатом виконання команди hostname -I є 192.168.1.5 - IP-адреса комп’ютера в локальній мережі.

  2. Виконання команди ip addr show має кілька результатів, які записані після слова inet. Перший з них - це 127.0.0.1 - внутрішня IP-адреса комп’ютера, яка потрібна для того, щоб програми могли взаємодіяти між собою в межах цього комп’ютера, використовуючи мережеві протоколи (наприклад, так браузер може отримати доступ до локального web-серверу).

  3. Другий результат виконання команди ip addr show - 192.168.1.5 - IP-адреса комп’ютера в локальній мережі.

Для того, щоб дізнатися, які IP-адреси є вільними або вже зайнятими в локальній мережі, можна використати команду nmap.

Пакунок nmap за замовчуванням не входить в дистрибутив Ubuntu, тому спочатку його необхідно встановити.

Для установки пакунку nmap у терміналі необхідно виконати наступну команду

sudo apt install nmap

Для отримання списку IP-адрес команда nmap використовує такий синтаксис (опція -v дозволяє виводити більше інформації в процесі сканування)

nmap -v -sn 192.168.1.5/24

де 192.168.1.5 - IP-адреса комп’ютера, на якому запускається команда nmap. Опція -sn забороняє сканування портів у разі виявлення комп’ютера в мережі, а лише роздруковує наявні хости, які відповіли на запит виявлення хоста.

Як правило, ім’я комп’ютера або, по-іншому, ім’я хоста (hostname), вказується під час встановлення операційної системи і не змінюється в процесі використання системи. Це ім’я постійно присутнє в терміналі перед запрошенням введення команди. Наприклад, у такому записі

teacher@teacher-VirtualBox:~$

ім’ям комп’ютера буде teacher-VirtualBox. Окрім того, дізнатися поточне ім’я комп’ютера можна, виконавши команду hostname у терміналі:

teacher@teacher-VirtualBox:~$ hostname
teacher-VirtualBox
Не використовуйте два однакових імені для комп’ютерів в одній локальній мережі, оскільки це може викликати проблеми з різними мережевими сервісами, але найочевидніше - не можна буде ідентифікувати окремий комп’ютер.

Якщо виникає потреба у редагуванні імені комп’ютера, необхідно звернутися до файлів hosts і hostname, які можна відкрити, виконавши у терміналі відповідні команди

sudo gedit /etc/hosts

і

sudo gedit /etc/hostname

Далі у файлах замінити старі назви на нові і зберегти зміни. Після усіх проведених дій комп’ютер необхідно перезавантажити.

7.2. Менеджер мережі

В Ubuntu найпростішим варіантом налаштування підключення до мережі виконується за допомогою програми Network Manager, яка дозволяє здійснювати налаштування різних видів підключень.

Аплет (значок) самої програми знаходиться в області повідомлень (поряд із значками розкладки клавіатури, гучності, живлення). Ось так виглядає аплет (зображення трьох, з’єднаних між собою, комп’ютерів) із вже підключеним дротовим з’єднанням до мережі

Аплет програми Network Manager
Аплет програми Network Manager

Якщо клікнути мишкою по цьому значку, то відкриється меню, в якому буде відображатися реальна інформація про доступні і активні підключення (дротові і бездротові), якщо такі були встановлені

Інформація про доступні і активні підключення
Інформація про доступні і активні підключення: активне дротове підключення

Щоб переглянути налаштування мережевого з’єднання необхідно обрати пункт Параметри мережі, після чого відкриється вікно, у якому необхідно навпроти назви з’єднання натиснути Параметри мережі

Інформація про мережеві з’єднання
Інформація про мережеві з’єднання

У вікні, що відкрилося, на вкладці Подробиці можна переглянути узагальнену інформацію про з’єднання (швидкість сполучення, IP-адресу, типовий маршрут тощо)

Подробиці налаштування дротового з’єднання
Деталі дротового мережевого з’єднання

На вкладці Засвідчення можна змінити інформацію про назву і MAC-адресу з’єднання

Назва дротового з’єднання
Налаштування дротового мережевого з'єднання: назва і MAC-адреса
За замовчуванням, у версії Ubuntu для настільних комп’ютерів, увімкнено DHCP. Таким чином, якщо у мережі є сервер DHCP (варіант з роутером, який під’єднаний до провайдера Інтернету), комп’ютер автоматично отримає динамічну IP-адресу.

Для встановлення статичної IP-адреси необхідно перейти на вкладку IPv4

Налаштування статичної IP-адреси дротового з’єднання
Налаштування статичної IP-адреси дротового з’єднання

і змінити Автоматично (DCHP) на Вручну, а потім вказати:

  • IP-адресу комп’ютера (у даному випадку, для поточного комп’ютера це 192.168.1.200, для інших комп’ютерів локальної мережі IP-адреси можуть мати вигляд, наприклад, 192.168.1.201, 192.168.1.202, 192.168.1.203 і т.д.);

  • маску мережі (однакова для усіх комп’ютерів мережі, для вищезгаданих IP-адрес (клас C) - 255.255.255.0);

  • адресу шлюза (однакова для усіх комп’ютерів мережі - 192.168.1.2 - IP-адреса роутера);

  • за потреби, вказати DNS-сервери через кому (8.8.8.8 - адреса публічного сервера Google).

Після встановлення або зміни параметрів мережевого з’єднання необхідно натиснути кнопку Застосувати, зберегти зміни і перезапустити мережеву службу перемикачем

Перезапуск мережевої служби
Перезапуск мережевої служби

7.3. Доступ до спільних ресурсів

Дуже часто необхідно надати доступ до певних ресурсів одного комп’ютера іншим користувачам в локальній мережі.

Спільні ресурси часто називають Shared-ресурсами (від англ. Shared - спільний, спільного користування). Про сам ресурс говорять, що його необхідно розшарити (поширити по мережі). У випадку каталогу, як спільного ресурсу, це значить відкрити загальний доступ до його вмісту.

7.3.1. Налаштування спільного доступу

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

Для цього, в контекстному меню каталогу Shared_Folder необхідно вибрати Властивості (Ctrl+I) і перейти на вкладку Спільний доступ для мережі

Спільний доступ до каталогу в Ubuntu
Спільний доступ до каталогу в Ubuntu

Якщо відзначити прапорцем Поділитися цією текою і натиснути кнопку Створити спільний ресурс, то каталог Shared_Folder стане доступним іншим користувачам у локальній мережі (значок каталогу буде доповнено значком загального доступу - двома протилежно напрямленими стрілками)

Значок розшареного каталогу Shared_Folder в Ubuntu
Значок розшареного каталогу Shared_Folder в Ubuntu

Якщо доступ до ресурсу надається перший раз, то система запропонує встановити Службу спільних ресурсів

Встановлення служби спільних ресурсів
Встановлення служби спільних ресурсів

Після згоди на встановлення цієї служби, з’явиться вікно встановлення пакунку, що називається Samba

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

Встановлюємо пакунок Samba, натиснувши на кнопку Встановити

Процес встановлення комплекту програмного забезпечення Samba
Процес встановлення комплекту програмного забезпечення Samba

7.3.2. Підключення до спільного каталогу Ubuntu із Windows

Створимо ще один каталог UbuntuFiles у домашньому каталозі і розшаримо його, щоб вміст каталогу був доступний іншим комп’ютерам в локальній мережі, зокрема із Windows.

Спільний доступ до каталогу UbuntuFiles в Ubuntu
Спільний доступ до каталогу UbuntuFiles в Ubuntu

Для доступу до розшареного каталогу UbuntuFiles в Ubuntu із Windows спочатку необхідно дізнатися IP-адресу або назву комп’ютера, на якому знаходиться UbuntuFiles. Наприклад, це можна зробити командами hostname -I або hostname відповідно, виконавши їх у терміналі.

Після чого у системі Windows необхідно ввести в адресний рядок Провідника два звортних слеша \\, а потім IP-адресу або назву комп’ютера з системою Ubuntu і натиснути Enter. Після цього будуть відображені усі розшарені каталоги на Ubuntu-машині

Спільний доступ до каталогу UbuntuFiles в Ubuntu із Windows
Спільний доступ до каталогу UbuntuFiles в Ubuntu із Windows

Але, якщо спробувати зайти у каталог UbuntuFiles, то отримаємо помилку доступу. Для виправлення цієї помилки необхідно у властивостях загального доступу даного каталогу відзначити прапорцем опцію Гостьовий доступ (для людей без облікового запису)

Гостьовий доступ до каталогу UbuntuFiles
Гостьовий доступ до каталогу UbuntuFiles

Повторна спроба зайти у каталог UbuntuFiles вже є успішною і можна побачити його вміст

Гостьовий доступ до каталогу UbuntuFiles
Гостьовий доступ до каталогу UbuntuFiles

Але, якщо у Windows спробувати створити, змінити або видалити файл/каталог на Ubuntu-машині, то знову з’явиться помилка - відсутній дозвіл на виконання таких дій.

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

Налаштування спільного доступу до каталогу UbuntuFiles
Налаштування спільного доступу до каталогу UbuntuFiles

Після чого система запитає про зміну прав на розшарений каталог

Зміна прав доступу до каталогу UbuntuFiles
Зміна прав доступу до каталогу UbuntuFiles

Якщо дати згоду на зміну прав доступу до каталогу, користувачі локальної мережі зможуть змінювати файли всередині розшареного каталогу UbuntuFiles.

Підключатися до розшареного таким чином каталогу можуть не лише користувачі Windows, але й користувачі Ubuntu.

7.3.3. Підключення до спільної папки Windows із Ubuntu

Створимо і розшаримо у Windows папку під назвою WinFiles. Відкриємо властивості папки WinFiles і перейдемо на вкладку Спільний доступ.

Спільний доступ до папки WinFiles у Windows
Спільний доступ до папки WinFiles у Windows

Відкриємо вікно Спільний доступ до файлів, натиснувши на Дозволити спільний доступ…, у якому потрібно обрати список локальних користувачів (облікові записи на цьому комп’ютері) і додати із цього списку групу Всі

Додавання групи Всі для спільного доступу до папки WinFiles у Windows
Додавання групи Всі для спільного доступу до папки WinFiles у Windows

Необхідно вказати для доданої групи Всі права доступу і натиснути кнопку Дозволити спільний доступ

Додавання для групи Всі прав доступу до папки WinFiles у Windows
Додавання для групи Всі прав доступу до папки WinFiles у Windows

Далі відкриємо Додаткові настройки спільного доступу… і відзначимо опцію Дозволити спільний доступу до цієї папки

Доступ до папки WinFiles у Windows
Доступ до папки WinFiles у Windows

Натиснувши кнопку Дозволи, можна змінити права на читання чи зміну спільного ресурсу WinFiles для групи або користувачів

Дозволи для ресурсу WinFiles у Windows
Дозволи для ресурсу WinFiles у Windows

Отже, папка WinFiles у системі Windows розшарена, тепер необхідно підключитися до неї із Ubuntu. Для цього треба дізнатися повний мережевий шлях до папки WinFiles у системі Windows. Мережевий шлях вказаний на вкладці Спільний доступ властивостей папки WinFiles і, у даному випадку, має значення \\USERSOFT\WinFiles.

Замість назви комп’ютера USERSOFT можна використовувати IP-адресу комп’ютера з Windows, яку можна дізнатися, відкривши вікно командного рядка сполученням клавіш Win+R і увівши команду ipconfig.

Відкриваємо файловий менеджер Nautilus в Ubuntu. Обираємо пункт Інші місця і у рядок З’єднатись із сервером вводимо smb і мережевий шлях до папки WinFiles у системі Windows, не забуваючи змінити зворотні слеші на прямі, після чого натискаємо З’єднатись

Мережевий шлях до папки WinFiles у Windows
Мережевий шлях до папки WinFiles у Windows

Далі з’явиться вікно з повідомленням про авторизацію

Авторизація в Ubuntu при з’єднанні з папкою WinFiles у Windows
Авторизація в Ubuntu при з’єднанні з папкою WinFiles у Windows

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

Вимкнення спільного доступу із захистом паролем у Windows
Вимкнення спільного доступу із захистом паролем у Windows

Після цього ввести довільні дані у рядки для користувача і пароля та натиснути З’єднатись. Далі можна буде заходити з Ubuntu у розшарені папки Windows, для яких дозволений доступ для групи Всі.

Для зручності і швидкого доступу до мережного ресурсу, можна додати його через контекстне меню (або сполученням клавіш Ctrl+D) в закладки файлового менеджера Nautilus

Створення закладки на мережевий ресурс у файловому менеджері Nautilus в Ubuntu
Створення закладки на мережевий ресурс у файловому менеджері Nautilus в Ubuntu

7.4. Samba

Samba - це програмне забезпечення для організації обміну файлами та роботи із загальними ресурсами між комп’ютерами під управлінням Linux/Unix і операційною системою Windows.

Samba складається з клієнтської і серверної частини. Клієнтська частина дозволяє отримати доступ до мережевих папок і ресурсів Windows, а серверна, у свою чергу, відкриває загальний доступ до каталогів Ubuntu для інших машин, в тому числі і Windows.

7.4.1. Встановлення і налаштування

Для встановлення пакунку Samba у терміналі необхідно виконати команду

sudo apt install samba

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

sudo systemctl status smbd

За замовчуванням, цей демон увімкнений, тому він буде запускатися разом з операційною системою без додаткових дій з боку користувача. Для зупинки/запуску служби можна використовувати слова stop і start. Наприклад, для зупинки команда буде такою

sudo systemctl stop smbd

Для налаштування роботи Samba використовують конфігураційний файл /etc/samba/smb.conf, який містить усі основні налаштування. Саме в ньому прописується:

  • які саме каталоги і принтери будуть доступні користувачам інших комп’ютерів у мережі;

  • хто і за яких умов буде мати доступ до файлів і принтерів;

  • чи зможуть клієнти не тільки читати, але і записувати дані;

  • яким чином буде здійснюватися підключення і т.д.

Вміст файла /etc/smb.conf ділиться на розділи, що містять окремі параметри і їх значення, про що можна пересвідчитися, відкривши цей файл у терміналі за допомогою команди

sudo gedit /etc/samba/smb.conf

Рядки, що починаються із символів # (решітка) і ; (крапка з комою) вважаються коментарями і не враховуються інтерпретатором при читанні файла. Назва розділу міститься в квадратних дужках, після якої йдуть параметри і їх значення, розділені знаком = (дорівнює), що відносяться до цього розділу.

Перед тим, як виконувати редагування файла конфігурації smb.conf, створимо резервну копію файла smb-default.conf, щоб в разі проблем мати можливість легко повернутися до відправної точки

sudo cp /etc/samba/smb.conf /etc/samba/smb-default.conf
Якщо буде необхідно відновити вихідний файл, треба видалити файл smb.conf і перейменувати файл smb-default.conf в smb.conf.

Створимо розшарений ресурс, доступний для читання і запису усім бажаючим. У файл конфігурації /etc/samba/smb.conf запишемо такі рядки

[public_share] (1)
comment = Here is some comment. (2)
path = /home/teacher/public_share (3)
guest ok = yes (4)
browseable = yes (5)
writable = yes (6)
create mask = 0644 (7)
directory mask = 0755 (8)
force user = publicshare (9)
  1. Назва розшареного ресурсу.

  2. Опис або будь-який коментар, доступний усім.

  3. Шлях до каталогу, доступ до якого відкриваємо (необхідно переконатися, що такий каталог існує і має відповідні права).

  4. Параметр guest ok зі значенням yes дозволяє підключатися без логіна і пароля.

  5. Параметр browseable визначає, чи буде розшарений ресурс відображатися у мережі.

  6. Параметр writable дозволяє запис у спільний каталог (на відміну від параметра read only, який дозволяє лише читання спільного каталогу).

  7. Параметр create mask виставляє права 0644 (усі користувачі мають право читання, власник може редагувати).

  8. Параметр directory mask виставляє права 0755 (кожен користувач має право читати і запускати на виконання, власник може редагувати).

  9. Параметр force user примусово визначає кожного, хто підключився, як користувача publicshare.

Тепер потрібно створити зазначеного користувача publicshare і передати йому права власника на каталог /home/teacher/public_share

sudo adduser --system publicshare
sudo chown publicshare /home/teacher/public_share
Ключ --system означає, що відбувається створення не простого користувача, а системного. Користувачі з цієї категорії мають мінімум прав, додаються в групу nogroup і, зазвичай, використовуються для запуску системних сервісів.

Для перевірки правильності налаштування smb.conf в пакунок Samba входить утиліта testparm, результат роботи якої може мати такий вигляд

teacher@teacher-VirtualBox:~$ testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: The "syslog" option is deprecated
Processing section "[printers]"
Processing section "[print$]"
Processing section "[public_share]"
Loaded services file OK.
WARNING: The 'netbios name' is too long (max. 15 chars).

Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

Після натискання клавіші Enter на екран буде виведений вміст файла конфігурації

# Global parameters
[global]
	dns proxy = No
	log file = /var/log/samba/log.%m
	map to guest = Bad User
	max log size = 1000
	obey pam restrictions = Yes
	pam password change = Yes
	panic action = /usr/share/samba/panic-action %d
	passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
	passwd program = /usr/bin/passwd %u
	server role = standalone server
	server string = %h server (Samba, Ubuntu)
	syslog = 0
	unix password sync = Yes
	usershare allow guests = Yes
	idmap config * : backend = tdb


[printers]
	browseable = No
	comment = All Printers
	create mask = 0700
	path = /var/spool/samba
	printable = Yes


[print$]
	comment = Printer Drivers
	path = /var/lib/samba/printers


[public_share]
	comment = Here is some comment.
	create mask = 0644
	force user = publicshare
	guest ok = Yes
	path = /home/teacher/public_share
	read only = No
Як бачимо, параметр writable = yes був замінений на read only = No. Відсутність directory mask = 0755, ймовірно, пояснюється тим, що 0755 є для цього параметра значенням за замовчуванням.

Тепер каталог /home/teacher/public_share розшарений і доступний в мережі. Зокрема, у Windows, наприклад, щоб знайти його, для цього достатньо перейти в Мережеве оточення.

Оскільки кожен, хто підключився, розглядається як користувач publicshare, хто завгодно може завантажити або видалити будь-які файли. При цьому нічим, окрім розшареного каталогу /home/teacher/public_share, користувач publicshare не володіє і ніяких небезпечних привілеїв не має.

На даний момент усі користувачі всередині локальної мережі отримали можливість читати і записувати будь-які дані в розшарений каталог /home/teacher/public_share.

7.4.2. Керування доступом

Давайте розглянемо, як зробити каталог доступним (або, навпаки, недоступним) для певних користувачів або IP-адрес всередині мережі, як приховати розшарений каталог.

Samba у своїй роботі використовує існуючі облікові записи користувачів Ubuntu. На відміну від імені користувача, пароль необхідно встановлювати окремо. Виконується це за допомогою утиліти smbpasswd, з її ж допомогою вмикається (активується) і сам користувач, як показано нижче

teacher@teacher-VirtualBox:~$ sudo smbpasswd -a publicshare
New SMB password:
Retype new SMB password:
Added user publicshare.
teacher@teacher-VirtualBox:~$ sudo smbpasswd -e publicshare
Enabled user publicshare.

publicshare - ім’я існуючого користувача Ubuntu.

У випадку, якщо у мережі є комп’ютер з Windows, де ім’я користувача відрізняється від використовуваного в Ubuntu, дуже зручно створити псевдонім, вказавши його у файлі /etc/samba/smbusers. Ця ж можливість стане в нагоді і для того, щоб дозволити різним людям діяти від одного імені.

Додамо псевдонім у файл /etc/samba/smbusers, помістивши у файл рядок приблизно наступного вигляду

publicshare = Sasha

де publicshare - ім’я користувача на комп’ютері з Ubuntu, того самого, для якого щойно був створений пароль, а Sasha - псевдонім, а точніше - ім’я користувача на комп’ютері з Windows. Тепер при підключенні, Samba знатиме, що Sasha - це відомий їй користувач publicshare. Псевдонімів у кожного користувача може бути кілька, а розділяються вони пропусками.

Після зберігання файла /etc/samba/smbusers необхідно відредагувати файл конфігурації smb.conf, додавши в секцію global наступний запис (щоб Samba дізналася про додані псевдоніми)

username map = /etc/samba/smbusers

А тепер перейдемо до практичної частини і створимо в Ubuntu мережевий каталог secret_share, який буде доступний тільки певним користувачам, а для всіх інших буде залишатися не тільки недоступним, але і невидимим у мережі.

Після створення каталогу secret_share, переконайтеся, що каталог доступний для запису і читання потрібним користувачам. Тепер додамо новий розділ у файл конфігураці smb.conf з приблизно таким змістом

[secret_share]
path = /home/teacher/secret_share
browseable = no
writable = yes
read list = student
write list = teacher publicshare
valid users = student teacher publicshare
guest ok = no

Параметр browseable, як вже говорилося, визначає, чи буде видимий розшарений каталог для усіх підключених користувачів. Відповідно, встановивши значення no, каталог буде невидимий. Щоб потрапити всередину даного каталогу, необхідно підключитись до нього, вказавши його назву після адреси сервера - комп’ютера, на якому розміщений каталог secret_share. Цю адресу можна дізнатися в Ubuntu командою hostname -I, а результуючий запис для доступу до прихованого каталогу у Windows може бути, наприклад, таким: \\192.168.1.5\secret_share.

У розділі secret_share є кілька нових параметрів:

  • read list - список користувачів, що мають доступ тільки для читання;

  • write list - користувачі, які мають право запису;

  • valid users - вказує список користувачів, які мають право підключатися до розшареного каталогу.

Таким чином, підключитися можуть тільки student, teacher, publicshare і тільки за умови, що вони знають про розшарений каталог secret_share, а student може лише читати вміст каталогу.

Існує спосіб заборонити конкретним користувачам підключатися, для цього використовується параметр invalid users.

Якщо комп’ютери у мережі мають статичні IP-адреси, можна вказати їх як дозволені за допомогою параметра hosts allow, або, навпаки, заборонити, прописавши їх після hosts deny.

Остаточний приклад робочої конфігурації для каталогу secret_share матиме такий вигляд

[secret_share]
	browseable = No
	path = /home/teacher/secret_share
	read list = student
	read only = No
	valid users = student teacher publicshare
	write list = teacher publicshare

Після завершення налаштування необхідно перезапустити Samba, виконавши у терміналі команду

sudo service smbd restart

Тепер у списку доступних мережевих каталогів у Windows каталог secret_share не відображається

Список мережевих ресурсів Ubuntu у Windows
Список мережевих ресурсів Ubuntu у Windows

але у нього можна перейти, дописавши в адресний рядок назву прихованого каталогу і, за потреби, увівши логін-псевдонім - ім’я користувача у Windows і пароль активованого користувача Samba

Перехід у прихований мережевий каталог Ubuntu у Windows
Перехід у прихований мережевий каталог Ubuntu у Windows

7.4.3. system-config-samba

Існують програми, що дозволяють виконувати налаштування Samba через графічний інтерфейс. Однієї з таких утиліт є system-config-samba. Встановити дану програму можна за допомогою термінала

sudo apt install system-config-samba

Після встановлення запускаємо утиліту через термінал командою

sudo system-config-samba

З’являється повідомлення про помилку

SystemError: could not open configuration file `/etc/libuser.conf': Немає такого файла або каталогу

Якщо файла немає, то необхідно його створити самостійно. Знову ж таки скористаємось терміналом

sudo touch /etc/libuser.conf
Утиліта touch була розроблена, перш за все, для того, щоб змінювати час останнього доступу до файла. Якщо вказаний файл відсутній, вона його створює.

Після повторного запуску програма system-config-samba вже працює

Налаштування сервера Samba
Налаштування сервера Samba

В основному вікні розташовується список загальнодоступних каталогів і ряд базових параметрів. Щоб змінити параметри будь-якого з них, необхідно натиснути на значку шестерні.

Інтерфейс вкрай мінімалістичний, тому, навіть, початківці зможуть виконати процес налаштування доступу до мережевих ресурсів.

7.5. Монтування мережевих ресурсів

Коли в мережі одночасно працюють комп’ютери як під управлінням операційної системи Ubuntu, так і Windows, постійно виникають завдання, пов’язані з інтеграцією сервісів, що надаються обома операційними системами.

Давайте розглянемо ще один спосіб, як виконати підключення мережевої папки Windows до файлової системи Linux на прикладі операційної системи Ubuntu.

Для початку, у Windows створимо папку mount_share і розшаримо її, встановивши відповідні права на доступ до неї певному користувачу.

Підтримку мережевих ресурсів Windows в Linux забезпечує пакунок cifs-utils, який можна встановити за допомогою термінала

sudo apt install cifs-utils

Наступним кроком буде створення каталогу, наприклад winshare, в /mnt (або у будь-якому іншому місці) в Ubuntu, у який буде підключатися мережева папка mount_share

sudo mkdir /mnt/winshare

І накінець, підключення мережевої папки mount_share в Ubuntu виконується за допомогою команди mount.cifs

sudo mount.cifs //SERVER_IP/SHARE_NAME /mnt/winshare -o username=WIN_USER_NAME,password=WIN_USER_PASSWORD

Така команда виконує приєднання до файлової системи Ubuntu мережевої папки Windows з ім’ям SHARE_NAME, яка розміщена на комп’ютері Windows з IP-адресою SERVER_IP, від імені користувача WIN_USER_NAME з паролем WIN_USER_PASSWORD. З конкретними значеннями запис команди mount.cifs буде таким

sudo mount.cifs //192.168.1.4/mount_share /mnt/winshare -o username=Sasha,password=1

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

sudo mount.cifs //192.168.1.4/mount_share /mnt/winshare

У більшості випадків цього достатньо, якщо ви працюєте від імені користувача суперкористувача. Якщо від імені суперкористувача виконується лише підключення мережевої папки Windows, а працювати з нею планується від імені звичайного користувача, то в якості опцій команді mount.cifs необхідно передати значення UID (числовий індентифікатор користувача) і GID (числовий індентифікатор основної групи) цього користувача, інакше, швидше за все, операції редагування файлів і каталогів будуть недоступними.

Отримати UID і GID користувача можна командою

grep LINUX_USER_NAME /etc/passwd

Замість LINUX_USER_NAME треба підставити ім’я користувача Ubuntu, під яким необхідно виконувати підключення до розшареної папки Windows.

Наприклад, для користувача Ubuntu з ім’я student виконання вищезгаданої команди може мати такий результат

teacher@teacher-VirtualBox:~$ grep student /etc/passwd
student:x:1001:1001:Учень,,,:/home/student:/bin/bash

Значення після двокрапки на 3-му і 4-му місці вказують на UID та GID користувача student. Тепер необхідно підставити отримані значення в якості додаткових аргументів команди mount.cifs

sudo mount.cifs //192.168.1.4/mount_share /mnt/winshare -o username=Sasha,password=1,uid=1001,gid=1001

У синтаксис команди mount.cifs можна додати інформацію про права доступу і кодування. Для цього використовують такі параметри

  • iocharset=utf8 - кодування;

  • file_mode=0755 - права доступу до файлів;

  • dir_mode=0755 - права доступу до каталогів.

Права доступу 0755 - кожен користувач може читати та запускати на виконання, власник може редагувати.

Враховуючи ці додаткові параметри, результуючий запис команди mount.cifs може бути таким

sudo mount.cifs //192.168.1.4/mount_share /mnt/winshare -o username=Sasha,password=1,uid=1001,gid=1001,iocharset=utf8,file_mode=0755,dir_mode=0755

Щоб мережева папка Windows автоматично підключалась разом із завантаженням Ubuntu, необхідно внести відповідну інформацію у файл /etc/fstab, тобто записати у кінець файла наступний рядок

//192.168.1.4/mount_share /mnt/winshare cifs user=WIN_USER_NAME,password=WIN_USER_PASSWORD,uid=1001,gid=1001 0 0

Варто зазначити, що у цьому випадку пароль зберігатиметься у відкритому вигляді, доступному для читання усім. Виправимо цей недолік. Створимо файл /etc/credentials (ім’я може бути довільним)

sudo gedit /etc/credentials

з таким вмістом

username=WIN_USER_NAME
password=WIN_USER_PASSWORD
domain=WIN_WORKGROUP

Або у випадку із конкретними значеннями

username=Sasha
password=1
domain=WORKGROUP
Щоб дізнатися, яка робоча група використовується у Windows, необхідно відкрити командний рядок ( Win+R , потім ввести cmd) і виконати команду: net config workstation.

Зробимо файл /etc/credentials доступним для читання і редагування лише для суперкористувача

sudo chmod 600 /etc/credentials

Тепер команда mount.cifs при ручному монтуванні мережевої папки Windows в Ubuntu матиме наступний синтаксис

sudo mount.cifs //SERVER_IP/SHARE_NAME /mnt/winshare -o credentials=/etc/credentials,uid=1001,gid=1001

А при автоматичному монтуванні, при внесенні інформації у файл /etc/fstab, синтаксис буде таким

//SERVER_IP/SHARE_NAME /mnt/winshare cifs credentials=/etc/credentials,uid=1001,gid=1001 0 0

Остаточний варіант запису у файл /etc/fstab з конкретними значеннями може мати такий вигляд

//192.168.1.4/mount_share /mnt/winshare cifs credentials=/etc/credentials,uid=1001,gid=1001 0 0

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

sudo mount -a

7.6. Програми для роботи в локальній мережі

7.6.1. NitroShare (обмін файлами)

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

Для встановлення цієї програми додамо PPA-репозиторій, виконавши у терміналі наступні команди

sudo apt-add-repository ppa:george-edison55/nitroshare
sudo apt install nitroshare

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

nitroshare

При першому запуску з’явиться вікно повідомлення, в якому необхідно натиснути кнопку Close.

Потім, натиснувши значок програми NitroShare, що знаходиться в рядку біля системних значків (розкладки клавіатури, мережі, гучності, живлення), необхідно в меню обрати Send Files… або Send Directory… для передавання на інший комп’ютер файлів або каталогу з його вмістом відповідно.

Обравши об’єкти для передачі, програма просканує мережу і покаже доступні пристрої. Залишається вибрати пристрій і натиснути OK, після чого виконається передача і з’явиться вікно з повідомленням про успішність виконання передачі.

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

Дана програма має певний набір параметрів, які, за потреби, можна змінити. Наприклад, для зміни місця зберігання переданих об’єктів необхідно обрати в меню значка програми NitroShare пункт Settings і на вкладці General у рядку Directory: вказати відповідний шлях до нового каталогу зберігання

Параметри програми NitroShare
Параметри програми NitroShare

7.6.2. Epoptes (віддалене керування)

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

Віддалене керування з програмою Epoptes
Віддалене керування з програмою Epoptes

Epoptes складається з серверного пакунку під назвою epoptes і клієнтського пакунку під назвою epoptes-client. Для роботи програми необхідно виконати деякі налаштування.

Сервер
  1. Встановити серверний пакунок на комп’ютер (teacher), з якого буде здійснюватись керування комп’ютерами-клієнтами, виконавши у терміналі команду

sudo apt install epoptes
  1. Далі необхідно додати користувачів до групи epoptes, яким буде дозволено запускати графічний інтерфейс програми та керувати клієнтами (щоб зміни вступили у силу, необхідно вийти із системи і знову залогуватись)

teacher@teacher-VirtualBox:~$ sudo gpasswd -a teacher epoptes
Додавання нового користувача teacher до групи epoptes
Клієнт
  1. Перш ніж встановити пакунок epoptes-client на комп’ютер клієнта (student), необхідно повідомити клієнту, як зв’язатися з комп’ютером-сервером.

Розглянемо варіант, коли комп’ютер-сервер epoptes має статичну IP-адресу.
  1. Виконайте у терміналі команду

sudo nano /etc/hosts

на усіх клієнських комп’ютерах і у файлі /etc/hosts запишіть рядок у форматі ip_адреса назва_сервера, де ip_адреса - статична IP-адреса сервера epoptes, а назва_сервера - назва комп’ютера-сервера в мережі (наприклад, рядок може бути таким 192.168.1.200 teacher).

  1. Натисніть сполучення клавіш Ctrl+X, а потім клавішу Y для збережння змін у файлі.

  1. Виконайте наступні команди у терміналі від суперкористувача

sudo apt install epoptes-client
sudo epoptes-client -c # Завантажує сертифікат OpenSSL із сервера
Зверніть увагу, що пакункам заборонено запускати програми всередині сеансу користувача, тому необхідно перезавантажити комп’ютери-клієнти, щоб встановлення epoptes-client набуло чинності.

Словник: основні поняття

Програмне забезпечення (програмні засоби, ПЗ, від англ. software)

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

Відкрите програмне забезпечення (від англ. open-source software )

програмне забезпечення з відкритим сирцевим (початковим, вихідним) кодом.

Операційна система, скорочено ОС (від англ. operating system, OS)

базовий комплекс програм, що виконує управління апаратною складовою комп’ютера або віртуальної машини; забезпечує керування обчислювальним процесом і організовує взаємодію з користувачем. Операційна система звичайно складається з ядра операційної системи та базового набору прикладних програм.

Компілятор (Compiler від англ. to compile - збирати в ціле)

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

Початковий код, вихідний код, програмний код, сирцевий код або сирці (від англ. source code)

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

Командна оболонка

інтерфейс командного рядка в Unix-подібних операційних системах. Командна оболонка виконує команди, які подає користувач, або які читаються з файлів. Такі файли з командами оболонки називаються сценаріями (скриптами, програмами) оболонки. Ці сценарії не компілюються, а інтерпретуються оболонкою. Це означає, що оболонка прочитує сценарій від початку до кінця, рядок за рядком, шукаючи зазначені там команди й виконуючи їх; на відміну від цього підходу, компілятор перетворює цілу програму до вигляду, придатного до виконання машиною - потім файл з таким кодом можна використати в сценарії оболонки. UNIX надає на вибір декілька різних оболонок: sh, bash (стандартна оболонка Linux), csh, zsh та інші.

Ядро операційної системи (від англ. Kernel)

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

Linux (укр. Лінукс, повна назва - GNU/Linux)

загальна назва UNIX-подібних операційних систем на основі однойменного ядра.

Дистрибутив Linux

складається з ядра Linux, системних бібліотек та інструментів, розроблених проектом GNU , інших програм. Існує величезна кількість різноманітних дистрибутивів Linux: Debian, Ubuntu, Elementary OS, Manjaro, Arch linux, Zorin OS, OpenSUSE, CentOS, Linux Mint, Fedora та інші.

Вільне програмне забезпечення (від англ. free software , software libre)

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

Пропрієтарне (власницьке) програмне забезпечення (від англ. proprietary software)

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

Графічна система (графічний сервер)

віконна система, що забезпечує стандартні інструменти та протоколи для побудови графічного інтерфейсу користувача (X.Org Server або Xorg, Wayland та інші).

Віконний менеджер

додаток, що працює «поверх» графічної системи та визначає інтерфейс і взаємодію з користувачем (Compiz - для Unity, Mutter - для Gnome Shell, OpenBox - для LXDE та інші).

Середовище робочого столу (графічне оточення робочого столу, від англ. Desktop environment)

різновид графічних інтерфейсів користувача (GNOME, Unity, KDE, Xfce, LXDE, Mate та інші). Таке середовище забезпечує простір, який називається Робочим столом, на якому з’являються вікна, піктограми, панелі та інші елементи. Зазвичай, робочим столом підтримуються механізми, які поєднують різні частини середовища, наприклад, drag-n-drop (перенесення даних між вікнами за допомогою вказівного пристрою). Призначення робочого оточення - створення інтуїтивного способу взаємодії користувача з комп’ютером.

Пакунок

містить певну програму чи службу, наприклад, бібліотеку для обробки малюнків у форматі PNG, колекцію шрифтів чи веб-оглядач.

Формати пакунків

формати файлів, які використовуються системами керування пакунками операційних систем на основі Linux і GNU (.deb, .rpm та інші).

Залежності

необхідність у встановленні додаткових компонентів для функціювання програми. Сучасне програмне забезпечення досить складне і складається з багатьох модулів - для зручності розробки. Модулі можуть містити функції (бібліотеки), що потрібні не одній, а багатьом програмам. Для прикладу, у Windows часто з іграми встановлюється C++ Redistributable, DirectX, або .NET Framework, у Linux - це більш поширена практика.

Система керування пакунками

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

Керівник пакунків (менеджер пакунків)

програма, яка може завантажувати пакунки з мережевого сховища (репозиторію) та відстежувати залежності між пакунками. Користувачі можуть працювати з графічними оболонками таких керівників пакунків.

Репозиторій

сховище програмного забезпечення, яке входить до певного дистрибутива. Фактично - це файловий сервер, з якого можна завантажити пакунки із потрібними програмами. Це трішки схоже на Google Play чи Apple App Store. Кожен дистрибутив має свій репозиторій, у якому всі програми узгоджені між собою по залежностях. В популярних дистрибутивах репозиторії мають дзеркала - резервні сервери, серед яких можна обирати той, з якого йде найшвидше завантаження.

Ubuntu (укр. Убунту)

операційна система для робочих станцій, лептопів і серверів, найпопулярніший у світі дистрибутив Linux.

LTS (від англ. Long Term Support)

довгострокова підтримка.

ISO-образ

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

Жорсткий диск (від англ. Hard (magnetic) disk drive, HDD), у комп’ютерному сленгу - «вінчестер»

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

Розділи диска

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

BIOS (від англ. Basic Input/Output System - базова система введення/виведення)

у IBM PC-сумісних комп’ютерах - тип firmware («прошивки»), що зберігається у постійній пам’яті і виконує початкову ініціалізацію комп’ютера після його увімкнення (перевірка і тестування обладнання, а потім вже завантаження завантажувача операційної системи). BIOS має псевдографічний інтерфейс, управління за допомогою клавіш та лише налаштування обладнання. Мікросхема BIOS вбудована в материнську плату комп’ютера.

MBR (від англ. Master Boot Record - головний завантажувальний запис)

перший фізичний сектор на жорсткому диску або іншому носії інформації, якщо цей пристрій можна поділити на логічні диски (розділи). Призначення MBR - не завантаження операційної системи, а всього лише вибір, з якого розділу виконувати завантаження. MBR-запис знаходиться на самому початку диска, якщо точніше, то він займає перші 512 байт. Він містить інформацію, про те, які логічні і розширені розділи є на цьому пристрої, тобто містить таблицю розділів (partition table). Крім того в MBR знаходиться виконуваний код, який може сканувати розділи в пошуках операційної системи, і, відповідно, ініціювати завантаження операційної системи. Для Windows - це завантажувач Windows, в Linux там знаходиться код ініціалізації завантажувача Grub. Через маленький обсяг MBR-запису підтримуються тільки чотири первинних розділи. Оскільки використовується 32-бітна адресація, то кожен розділ може бути не більше 2,2 ТБ. Крім того, завантажувальний запис не має жодного резервного MBR, тому, якщо перезаписати головний завантажувальний запис, вся інформація про розділи буде втрачена. Плюсом MBR можна назвати повну сумісність з багатьма операційними системами в тому числі Windows, включаючи попередні версії, Linux і Mac OS.

UEFI (від англ. Unified Extensible Firmware Interface - інтерфейс розширеної «прошивки»)

інтерфейс між операційною системою і мікропрограмами, які керують низькорівневими функціями комп’ютерного обладнання. Основне призначення UEFI: коректно ініціалізувати обладнання при увімкненні комп’ютера і передати управління завантажувачу операційної системи. UEFI призначений для заміни BIOS. Перша специфікація UEFI (тоді ще просто EFI) була розроблена компанією Intel. UEFI підтримує всі функції, які були реалізовані в BIOS, а також багато нових функції (наприклад, підтримка драйверів обладнання, як наслідок, підтримка миші і графічної карти), що і робить UEFI найкращим рішенням для використання на сучасних комп’ютерах. UEFI містить CSM (від англ. Compatibility Support Module) - спеціальний компонент UEFI, що забезпечує зворотну сумісність з традиційними x86-системами (64-бітні процесори повністю підтримують UEFI, а ось 32-бітні не підтримують частину функцій і операційна система повинна емулювати для них середовище BIOS, щоб нормально працювати), і надає можливість завантаження операційних систем за допомогою класичного методу MBR. У цьому режимі файлові системи на дисках ігноруються, і початкове завантаження починається, як і у BIOS-системах, з boot-сектору (перший сектор на диску). На багатьох сучасних материнських платах зараз можна використовувати два режими: Legacy BIOS або UEFI.

GPT (GUID Partition Table - стандарт формату розміщення таблиць розділів на фізичному жорсткому диску)

частина Розширеного мікропрограмного інтерфейсу (від англ. Extensible Firmware Interface, EFI) - стандарту, запропонованого Intel на зміну BIOS. На відміну від MBR-запису, який починається з машинного коду, що шукає та ініціалізує завантаження з активного розділу, GPT використовує розширені можливості EFI для здійснення цих дій. GPT використовує LBA - сучасну лінійну схему адресації логічних блоків, замість адресації в MBR Циліндр - Головка - Сектор ( CHS). Проте MBR-запис присутній в самому початку диску (блок LBA0) як для захисту, так і з метою сумісності. GPT починається з Заголовка таблиці розділів (від англ. Partition Table Header), у блоці (LBA1), а сама таблиця розділів, зазвичай, міститься у наступному блоці - LBA2. Завдяки адресації LBA, GPT на відміну від MBR, може створювати розділи до 9,4 ЗБ, а цього найближчим часом цілком вистачить. GPT підтримує Unicode тому ви можете задавати імена та атрибути розділам на будь-якій з підтримуваних мов і звертатися до дисків за цими іменами. Мінусом або ще одним плюсом GPT є те, що при завантаженні перевіряються контрольні суми таблиць, а це значить, що якщо ви захочете щось змінити вручну, то система не завантажиться. В кінці диска є копія GPT, яка може використовуватися для відновлення пошкодженої основної таблиці розділів на початку диска.

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

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

Точка монтування (від англ. Mount point)

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

swap

один з механізмів віртуальної пам’яті, при якому окремі фрагменти пам’яті (зазвичай неактивні) переміщаються з ОЗП у вторинне сховище (окремий розділ або файл), звільняючи ОЗП для завантаження інших активних фрагментів пам’яті.

ОЗП (оперативно запам’ятовуючий пристрій, оперативна пам’ять)

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

Лог (від англ. Log file)

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

Ext4

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

ASCII (акронім від назви Американський стандартний код для інформаційного обміну, від англ. American Standard Code for Information Interchange)

система кодів, у якій числа від 0 до 127 включно поставлені у відповідність літерам, цифрам і символам пунктуації. Наприклад, 45 відповідає знаку перенесення, а 65 - великій латинській літері A. Перші 32 коди використовуються для керівних функцій, на зразок введення і стирання попереднього символу. Строго кажучи, ASCII - це семибітний код, а восьмий біт часто використовується для забезпечення відповідності чи для додаткових символів. Такий 8-бітний варіант коду називають розширеним ASCII. Система широко використовується для зберігання тексту і передачі інформації між комп’ютерами.

UTF-8 (від англ. Unicode Transformation Format - формат перетворення Юнікоду)

кодування, що реалізовує представлення Юнікоду, сумісне з 8-бітовим кодуванням тексту. Текст, що складається тільки з символів, коди яких менші ніж 128, при записі в UTF-8 перетворюється на звичайний текст ASCII. І навпаки, в тексті UTF-8 будь-який байт із значенням менше, ніж 128, зображає символ ASCII з тим же кодом. Решта символів Юнікоду зображається послідовностями завдовжки від 2 до 6 байтів (реально тільки до 4 байтів, оскільки використання кодів більших, ніж 221 не планується), в яких перший байт завжди має вигляд 11xxxxxx, а решта - 10xxxxxx. Простіше кажучи, у форматі UTF-8 символи латинського алфавіту, розділові знаки і символи управління ASCII записуються кодами US-ASCII, а решта символів кодується за допомогою октетів із старшим бітом 1. В результаті, навіть якщо програма не розпізнає Юнікод, то англійська мова і розмітка все одно відображатимуться правильно.

Юнікод (від англ. Unicode), УНІфіковане КОДування

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

Монтування/розмонтування файлових систем

в Unix-подібних операційних системах файлові системи монтуються в загальне дерево каталогів, вершиною якого є кореневий каталог /. Нова файлова система може бути змонтована в будь-який вже існуючий каталог (точку монтування) будь-де у дереві каталогів. Існує стандарт FHS, який передбачає два каталоги для монтування: /media для знімних носіїв (оптичні диски, USB-накопичувачі, карти пам’яті) та /mnt для тимчасово монтованих файлових систем (наприклад, спільні мережеві ресурси).

Filesystem Hierarchy Standard, FHS (Стандарт Ієрархії Файлової Системи)

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

GRUB (від англ. GRand Unified Bootloader - Грандіозний уніфікований завантажувач)

завантажувач операційної системи від проекту GNU. GRUB дозволяє користувачеві мати кілька встановлених операційних систем і при вмиканні комп’ютера вибирати одну з них для завантаження. GRUB - найпопулярніший завантажувач у світі Linux і є завантажувачем за замовчуванням у більшості відомих дистрибутивів.

Інтерфейс командного рядка (від англ. command-line interface, CLI)

різновид текстового інтерфейсу користувача й комп’ютера, в якому інструкції комп’ютеру можна дати тільки введенням із клавіатури текстових рядків (команд).

ls (від англ. list - список)

утиліта UNIX-подібних систем, яка виводить вміст каталогу файлової системи та інформацію про файли.

pwd (від англ. print working directory - надрукувати робочий каталог)

консольна команда в UNIX-подібних системах, яка виводить повний шлях від кореневого каталогу до поточного робочого каталогу.

cd (від англ. change directory - змінити каталог)

команда командного рядка для зміни поточного каталогу в Unix, DOS та інших операційних системах.

touch

команда Unix, призначена для встановлення часу останньої зміни файла або доступу в даний час. Також використовується для створення порожніх файлів.

echo

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

date

команда, яка виводить поточну дату.

uptime

команда, яка виводить статистичну інформацію про роботу системи: скільки часу пройшло з моменту останнього перезавантаження (власне, це і є час uptime), скільки користувачів в даний момент підключено до системи і середнє навантаження системи процесами в ній за останні 1, 5 і 15 хвилин.

whoami

команда виводить ім’я користувача, асоційоване з поточним ідентифікатором користувача.

nano

консольний текстовий редактор для Unix і Unix-подібних операційних систем. В даний час включений у дистрибутиви Ubuntu за замовчуванням.

mkdir (від англ. make directory)

в операційніх системах Unix, Linux, DOS, Windows - команда для створення нових каталогів.

rmdir (від англ. remove directory)

команда в операційних системах DOS, UNIX, Windows, яка видаляє каталог з файлової системи.

rm (від англ. remove)

утиліта в UNIX і UNIX-подібних системах, яка використовується для видалення файлів із файлової системи.

mv (від англ. move)

утиліта в UNIX і UNIX-подібних системах, використовується для переміщення або перейменування файлів.

cp (від англ. copy)

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

inode (індексний дескриптор)

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

grep

утиліта командного рядка, яка знаходить рядки, що відповідають заданому регулярному виразу, і виводить їх. Назва цієї команди - це акронім англійської фрази search globally for lines matching the regular expression, and print them - шукати скрізь рядки, відповідні регулярному виразу, і виводити їх.

Регулярний вираз (від англ. regular expression, скорочено regex або regexp)

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

chmod

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

chown

UNIX‐утиліта, що змінює власника і/або групу для вказаних файлів.

find

утиліта, яка використовується в UNIX-подібних операційних системах для пошуку файлів за іменами та іншими властивостями.

less

програма для текстових терміналів UNIX-подібних систем, яка використовується для перегляду (але не зміни) вмісту текстових файлів на екрані. Відображає вміст файла з можливістю прокручування.

head

утиліта в UNIX-подібних операційних системах, що виводить перші n рядків з файла, за замовчуванням n дорівнює 10.

whereis

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

which

утиліта в UNIX-подібних операційних системах, яка показує повний шлях до встановленої програми.

tail

утиліта в UNIX-подібних операційних системах, що виводить декілька (за замовчуванням, 10) останніх рядків з файла.

cat (від англ. concatenate)

утиліта UNIX, що виводить послідовно зазначені файли (або пристрої), об’єднуючи їх в єдиний потік. Якщо замість імені файла вказується -, то зчитується стандартний потік введення. За допомогою cat можна дуже просто подивитися вміст невеликого файла, склеїти кілька файлів тощо.

wc (абревіатура від word count)

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

ln (від англ. link - посилання, зв’язувати)

Unix-програма для створення жорстких або символьних посилань на файли або каталоги у файловій системі.

Архів

файл, що містить у собі один або декілька файлів та метадані. Метадані можуть містити інформацію про початковий розмір файлів, інформацію про формат файлів, структуру каталогів, коментарі до файлів, інформацію для відновлення архіву і т.д. Архіви файлів створюються за допомогою спеціалізованих програм - архіваторів - програмного забезпечення, що використовується для об’єднання, в окремих випадках, також для стиснення інформації. Популярні формати архівних файлів: .zip, .rar, .tar, .gz, .bz2 та інші.

tar (від англ. tape archive - стрічковий архів)

формат файла-архіву, а також назва традиційної для Unix програми для роботи з такими архівами. Спочатку програма tar використовувалася для створення архівів на магнітній стрічці, а в даний час tar використовується для зберігання кількох файлів всередині одного файла, для поширення програмного забезпечення. Однією з переваг формату tar при створенні архівів є те, що в архів записується інформація про структуру каталогів, про власника і групу окремих файлів, а також тимчасові мітки файлів. Як і багато інших програм Unix, tar - спеціалізована програма, яка дотримується філософії Unix робити тільки одну річ (в даному випадку - працювати з архівами формату tar), але робити її добре. Тому tar не створює стиснених архівів, а використовує для стиснення зовнішні утиліти, такі, як gzip і bzip2.

zip

популярний формат архівації файлів і стиснення даних без втрат. Найбільш часто zip використовує алгоритм стиснення Deflate - алгоритм стиснення без втрат.

Обліковий запис

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

Суперкористувач (від англ. super user - суперкористувач)

користувач із адміністративними повноваженнями. У багатьох UNIX-подібних операційних системах суперкористувач - це користувач root, у версіях Microsoft Windows - Administrator.

sudo (дослівно «виконати від суперкористувача»)

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

Ідентифікатор користувача (від англ. User ID або user identifier, UID)

ідентифікатор користувача в операційній системі Unix та їй подібних. Зберігається в облікових записах користувачів у файлі паролів (/etc/passwd). Операційна система розпізнає користувача саме за його UID (а не, наприклад, за логіном). Величина допустимих значень UID залежить від системи, що використовується. Загалом, UID допускає використання значень від 0 до 65534 включно з деякими вийнятками: суперкористувач завжди має UID, що дорівнює 0, користувачу nobody зазвичай присвоюється найбільший серед можливих UID (протилежний суперкористувачу), або один із системних UID. У системах на основі Debian, в тому числі, і в Ubuntu, UID з 1 по 999 зарезервовані для потреб системи.

nobody (від англ. nobody - ніхто)

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

Ідентифікатор групи (від англ. Group ID, group identifier, GID)

числовий ідентифікатор групи в операційній системі Unix та їй подібних. Під час створення облікового запису, він автоматично присвоюється головній групі. GID головної групи за замовчуванням однаковий з UID. Інформація про групи знаходиться у файлі /etc/group. Правила формування ідентифікаторів груп: група root має GID (0), група nogroup має останній GID (65534), у системах на основі Debian, в тому числі, і в Ubuntu, діапазон GID від 1 до 999 (типово) зарезервовано для груп операційної системи, GID від 1000 і вище призначені для основних груп.

nogroup

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

su (від англ. switch user - замінити користувача)

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

Командний інтерпретатор

програма, яка забезпечує взаємодію користувача з операційною системою. Наприклад, cmd у Windows; sh і bash в операційних системах UNIX/Linux. Основне призначення - виконання команд користувача.

Файловий менеджер

комп’ютерна програма, що надає інтерфейс користувача для роботи з файловою системою. Дозволяє виконувати поширені дії з файлами: створення, перегляд/відкриття/запуск, редагування, переміщення, перейменування, копіювання, вилучення, зміну атрибутів та властивостей, пошук та призначення прав.

useradd

команда для створення нових облікових записів користувачів у системах Linux.

usermod

типова команда багатьох операційних Unix-подібних операційних систем для внесення змін до інформації про існуючий обліковий запис користувача.

adduser (від англ. add user - додати користувача)

команда для створення нових облікових записів користувачів у системах Linux. Після запуску команди разом із введеним новим іменем користувача запитує інформацію, необхідну для створення облікового запису.

deluser

команда для видалення облікових записів користувачів у системах Linux.

apt (від англ. advanced packaging tool), керівник пакунків, менеджер пакунків

програма для роботи з пакунками програм в операційних системах Linux Debian, і заснованих на них - Ubuntu, Linux Mint та інших.

uname (скорочення від англ. unix name)

консольна UNIX-утиліта, що виводить інформацію про поточну систему: назву, версію тощо.

cut (від англ. cut - вирізати)

утиліта UNIX, що друкує вибрані частини рядків (з кожного файла) на стандартний потік виведення. Витяг сегментів рядків відбувається по байтах (-b), по символах (-c), або по полях (-f), обмежених розділювачами (-d - символ табуляції за замовчуванням). Діапазон вибраних частин рядків може бути встановлений такими варіантами: N, N-M, N- (від N і до кінця рядка), або -M (від початку рядка до M), де N і M - порядкові номери.

Personal Packages Archive (PPA)

персональний архів пакунків.

AppImage

є форматом для поширення портативного програмного забезпечення у Linux без необхідності використання дозволів суперкористувача для встановлення додатків.

Flatpak

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

Snap

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

SquashFS (SFS)

стискаюча файлова система для GNU/Linux, що надає доступ до даних в режимі тільки для читання. Відмінною особливістю цієї файлової системи є дуже компактне представлення метаданих і зберігання даних в стислому вигляді. Найбільш затребуваним застосуванням SquashFS є використання як файлової системи для інсталяційних образів, Live-систем і прошивок.

cron (від грец. Chronos - час)

утиліта в операційних системах Unix і Linux, яка дозволяє користувачам виконувати команди або скрипти (групи команд) автоматично в заданий час. Кожен користувач системи має свій файл завдань crontab (cron табулятор), в якому описано, в який час і які команди і програми запускати від імені цього користувача.

Демон (daemon, у перекладі з грец. - божество)

комп’ютерна програма в системаху UNIX, що запускається самою системою і працює у фоновому режимі без прямої взаємодії з користувачем. Демони зазвичай запускаються під час завантаження системи. Типові завдання демонів: сервери мережевих протоколів (HTTP, FTP, електронна пошта та ін.), управління обладнанням, підтримка черг друку, управління виконанням завдань за розкладом і т.д. У системах Windows аналогічний клас програм називається службами (від англ. Services).

GNU wget

неінтерактивна консольна утиліта для завантаження файлів за протоколами HTTP, HTTPS та FTP. wget дає змогу рекурсивно завантажувати файли, конвертувати посилання, вказувати складові посилання, які будуть оброблені програмою тощо. Програма портативна й запускається на багатьох UNIX-подібних системах, Microsoft Windows, MacOS.

Java Runtime Environment (JRE, середовище виконання для Java)

мінімальна реалізація віртуальної машини, що необхідна для виконання Java-додатків, без компілятора й інших засобів розробки. Складається з віртуальної машини - Java Virtual Machine - та бібліотеки Java-класів.

Open Document Format (OpenDocument, ODF, скорочено від OASIS Open Document Format for Office Application, відкритий формат документів для офісних застосунків)

відкритий формат файлів документів для зберігання й обміну офісними документами, доступними для редагування, в тому числі текстовими документами, електронними таблицями, малюнками, базами даних, презентаціями. Cтандарт спільно розроблений різними організаціями, доступний усім і може використовуватись без обмежень. Він є альтернативою приватним закритим форматам у Microsoft Office, на зразок DOCX, XLSX і PPTX.

GNU Privacy Guard (GnuPG або GPG)

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

Однорангова локальна мережа

мережа, у якій усі комп’ютери рівноправні, немає ієрархії серед комп’ютерів і немає виокремленого (від англ. dedicated) сервера. Тобто, кожен комп’ютер функціонує і як клієнт, і як сервер - інакше кажучи, немає окремого комп’ютера, відповідального за всю мережу. Користувачі самі вирішують, які дані на своєму комп’ютері зробити доступними по мережі.

Мережевий комутатор (свіч, від англ. switch - перемикач)

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

Маршрутизатор або роутер (від англ. router)

електронний пристрій, що використовується для поєднання двох або більше мереж і керує процесом маршрутизації, тобто, на підставі інформації про топологію мережі (фізична структура - фізичні з’єднання між комп’ютерами, і логічна структура - взаємодія комп’ютерів) та певних правил приймає рішення про пересилання мережевих пакунків між різними сегментами мережі. Для звичайного користувача маршрутизатор (роутер) - це мережевий пристрій, який підключається між локальною мережею й Інтернетом. Часто маршрутизатор не обмежується простим пересиланням даних між інтерфейсами, а виконує й інші функції: захищає локальну мережу від зовнішніх загроз, обмежує доступ користувачів локальної мережі до ресурсів Інтернету, роздає IP-адреси, шифрує трафік і багато іншого.

MAC-адреса (від англ. Media Access Control - управління доступом до носія)

унікальний ідентифікатор, що зіставляється з різними типами устаткування для комп’ютерних мереж (мережева карта, роутер тощо).

DHCP (від англ. Dynamic Host Configuration Protocol - протокол динамічної конфігурації вузла)

стандартний протокол прикладного рівня, який дозволяє комп’ютерам автоматично отримувати IP-адресу та інші параметри, необхідні для роботи в мережі: IP-адреса маршрутизатора за замовчуванням, маска підмережі, адреси серверів DNS. Для цього комп’ютер звертається відповідно до DHCP-сервера.

Доменна система імен (від англ. Domain Name System, DNS)

ієрархічна розподілена система перетворення імені хоста (комп’ютера або іншого мережевого пристрою) в IP-адресу. Кожен комп’ютер в Інтернеті має свою власну унікальну адресу - число, яке складається з чотирьох (у протоколі IPv4) або шістнадцяти (у протоколі IPv6) байтів. Оскільки запам’ятати десятки чи навіть сотні номерів - важка процедура, то всі (чи майже всі) машини мають імена, запам’ятати які (особливо якщо знати правила утворення доменних імен) значно легше.

Додаток A: Створення завантажувальної флешки

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

Для створення завантажувальних (і мультизавантажувальних, тобто з кількома дистрибутивами) флеш-дисків існує багато спеціальних утиліт для різних платформ і архітектур. Деякі з них представлені у списку нижче:

Найпростішим варіантом створення завантажувальної флешки з дистрибутивом Linux є використання програми Rufus Windows) і програми Створити завантажувальний диск (вже інтегрована у більшість дистрибутивів Linux).

Інструкції, як використовувати утиліти Rufus і Створити завантажувальний диск, наведені у інтерактивних посібниках з офіційного сайту Ubuntu. Відповідно:

При створенні завантажувальної флешки у Windows в програмі Rufus для кращої сумісності з новим апаратним забезпеченням оберіть схему розділів GPT і цільовий тип системи UEFI (без CSM). Однак, якщо вам потрібно використовувати USB-накопичувач зі старим апаратним забезпеченням, оберіть схему розділу MBR і тип цільової системи BIOS чи UEFI.

Додаток B: Основні команди термінала

Таблиця "Файли і каталоги"
Команда Дія

cd /home

перейти у каталог /home

cd ..

перейти в каталог на рівень вище

cd ../..

перейти в каталог двома рівнями вище

cd ~

перейти у домашній каталог користувача

pwd

вивести назву поточного каталогу

ls

відобразити вміст поточного каталогу

ls -l

детально відобразити вміст поточного каталогу

ls -a

показати приховані файли та каталоги в поточному каталозі

mkdir dir1

створити каталог з ім’ям dir1

mkdir {dir1,dir2}

cтворити одночасно два каталоги, dir1 і dir2, всередині поточного каталогу

mkdir -p ./dir1/dir2/dir3

cтворити вкладені один в одний три каталоги dir1, dir2, dir3

rm -f file1

видалити файл з іменем file1 без підтвердження

rmdir dir1

видалити каталог з іменем dir1

rm -rf dir1

видалити каталог з ім’ям dir1 і рекурсивно увесь його вміст

mv dir1 new_dir

перейменувати каталог (або файл) dir1 у new_dir

mv file1 ../new_dir/

перемістити файл (або каталог) file1 у каталог ../new_dir/

cp file1 file2

скопіювати вміст файла file1 у файл file2

cp -a dir1 dir2

скопіювати каталог dir1 в каталог dir2

ln -s file1 link1

створити символьне посилання link1 на файл file1 (або каталог)

ln file1 link1

створити жорстке (фізичне) посилання link1 на файл file1 (або каталог)

touch file1

якщо вказаний файл file1 відсутній, то створити його з назвою file1

echo '' > empty_file.txt

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

file log.txt

визначити тип файла log.txt (результат роботи команди, наприклад, такий: UTF-8 Unicode text)

du -h log.txt

показати розмір файла log.txt (або каталогу) у зручному форматі

wc log.txt

підрахувати кількість рядків, слів, байтів у файлі log.txt

df -h

показати детальну інформації про використання дискового простору файловою системою (аналізатор дискового простору)

Таблиця "Права доступу"
Команда Дія

ls -lh

переглянути права на файли і каталоги в поточному каталозі

chmod g+w file1

додати права для групи на зміну файла file1

chmod go-r file1

видалити права на читання для групи і усіх інших користувачів для файла file1

chmod -R o+wx dir1

додати права для інших користувачів і груп на зміну та виконання каталогу dir1

chmod 667 file1

додати права на читання, зміну і виконання для усіх інших користувачів для file1

chown user1 file1

призначити власником файла file1 користувача user1

chown -R user1 dir1

призначити рекурсивно власником каталогу dir1 користувача user1

Таблиця "Пошук файлів"
Команда Дія

find / -name file1

знайти файли і каталоги з ім’ям file1 (пошук з кореня файлової системи /)

find /home/user1 -name "∗.txt"

знайти усі файли і каталоги, імена яких закінчуються на ∗.txt (пошук розпочати з /home/user1)

find /usr/bin -type f -mtime -15

знайти усі файли і каталоги, створені чи змінені протягом останніх 10 днів

find ./images -type f -name "∗.jpg" -size +200k

знайти у каталозі ./images файли, імена яких закінчуються на ∗.jpg і розміром, бальшим за 200 кілобайт

find ./images -type f | sort

відсортувати знайдені файли у каталозі ./images за зростанням (за алфавітом)

find ./images -type f | sort -r

відсортувати знайдені файли у каталозі ./images за спаданням

which prog

показати повний шлях до встановленої програми prog

whereis prog

показати шлях до розміщення бінарних файлів, вихідних кодів програми prog

Таблиця "Перегляд вмісту файлів"
Команда Дія

man command

вивести інструкцію з використання команди command

command --help

вивести інструкцію з використання команди command

cat file1

вивести вміст файла file1 на стандартний пристрій виведення

cat -n file1

пронумерувати рядки, при виведенні вмісту файла file1 на стандартний пристрій виведення

tac file1

вивести вміст файла file1 на стандартний пристрій виведення у зворотному порядку

less file1

посторінково вивести вміст файла file1 на стандартний пристрій виведення з можливістю гортання вгору-вниз

head -4 file1

вивести перші чотири рядки файла file1 на стандартний пристрій виведення (за замовчуванням, 10 рядків)

tail -3 file1

вивести останні три рядки файла file1 на стандартний пристрій виведення (за замовчуванням, 10 рядків)

grep text /var/log/messages

з файла /var/log/logs відібрати і вивести на стандартний пристрій виведення рядки, що містять text

grep ̂The /var/log/messages

з файла /var/log/messages відібрати і вивести на стандартний пристрій виведення рядки, що починаються на The

whoami > log.txt

перенаправлення виводу команди whoami у текстовий файл log.txt (якщо файл log.txt існує, він буде перезаписаний)

date >> log.txt

перенаправлення виводу команди date у текстовий файл log.txt (дописування інформації у кінець файла log.txt)

Таблиця "Архівація і стиснення"
Команда Дія

tar -cvf archive.tar file1 file2 dir1

створити tar-архів archive.tar із файлами file1, file2 і каталогом dir1

tar -tf archive.tar

показати вміст архіву archive.tar

tar -xvf archive.tar

видобути файли із архіву archive.tar

tar -xvf archive.tar -C /tmp

видобути файли із архіву archive.tar у каталог /tmp

tar -cjvf archive.tar.bz2 file1 file2

створити архів archive.tar.bz2 з файлами file1, file2 і стиснути його

tar -xjvf archive.tar.bz2

видобути стиснений архів archive.tar.bz2

tar -czvf archive.tar.gz file1 file2

створити архів archive.tar.gz з файлами file1, file2 і стиснути його

tar -xzvf archive.tar.gz

видобути стиснений архів archive.tar.gz

zip files.zip file1

створити стиснений архів files.zip з файлом file1

zip -r -9 files.zip file1 file2 dir1

оновити архів files.zip з найкращим стисненням, додавши до архіву файли file1, file2 і каталог dir1

zip -e cryptedfiles.zip file3 file4

створити стиснений зашифрований архів cryptedfiles.zip з файлами file1, file2 (при створенні і видобуванні архіву необхідно ввести пароль)

unzip files.zip

видобути вміст із стисненого архіву files.zip

Таблиця "Користувачі і групи"
Команда Дія

sudo command

виконати команду command від імені суперкористувача

useradd -c "Here is a comment" -g admin -d /home/user1 -s /bin/bash user1

створити користувача user1, призначити йому в якості домашнього каталогу /home/user1, як командну оболонку /bin/bash, включити його в групу admin і додати коментар Here is a comment

usermod -G users -a user1

додати користувача user1 у групу users

adduser user1

створити нового користувача user1 за допомогою скрипта

deluser --remove-home user1

видалити користуваяа user1 і його домашній каталог із системи

passwd user1

змінити пароль користувача user1 (запускати від імені суперкористувача)

whoami

показати ім’я поточного користувача

su user1

змінити користувача у терміналі на user1 (необхідно ввести пароль для user1)

Таблиця "Мережа"
Команда Дія

hostname

відобразити ім’я комп’ютера

hostname -I

відобразити локальну IP-адресу комп’ютера

ping name

відправити на вказану адресу name мережеві пакунки для перевірки можливості з’єднання з цим вузлом (name - назва комп’ютера або його IP-адреса)

Таблиця "Керування пакунками"
Команда Дія

dpkg -i package.deb

встановити пакунок package.deb

dpkg -l

показати усі пакунки, встановлені у систему

dpkg -r package_name

видалити пакунок package_name із системи

apt install package_name

встановити/оновити пакунок package_name

apt remove package_name

видалити пакунок package_name, встановлений в систему, зі збереженням файлів конфігурації

apt purge package_name

видалити пакунок package_name, встановлений в систему, із видаленням файлів конфігурації

apt update

отримати оновлені списки пакунків

apt upgrade

оновити пакунки, встановлені у систему

apt autoremove

видалити пакунки, які були встановлені як залежності інших, але зараз вони більше не потрібні

apt clean

видалити архівні завантажені файли пакунків

apt autoclean

видалити старі завантажені архівні файли пакунків

Таблиця "Інші команди"
Команда Дія

clear

очистити вікно термінала

date

вивеcти поточну дату

uptime

вивести статистичну інформацію про роботу системи (скільки часу пройшло з моменту останнього перезавантаження, скільки користувачів в даний момент підключено до системи, середнє завантаження системи за останні 1, 5 і 15 хвилин)

lsb_release -a

вивести інформацію про поточну версію Ubuntu

uname -a

отримати інформацію про поточне ядро системи Ubuntu

uname -r

визначити лише ім’я поточного ядра, на якому система працює

reboot

перезавантажити систему

logout

вийти із системи

shutdown

вимкнути комп’ютер

Додаток C: Wine

Wine - вільне програмне забезпечення, що дозволяє користувачам UNIX-подібних систем виконувати 32- і 64-бітні додатки Microsoft Windows.

Назва Wine є рекурсивним акронімом і розшифровується як Wine Is Not an Emulator.

Для встановлення Wine в Ubuntu 18.04 необхідно виконати кілька кроків.

Для початку, додамо підтримку 32-бітних додатків, якщо ви використовуєте x86_64 систему. Для цього у терміналі треба виконати команду

sudo dpkg --add-architecture i386

Далі необхідно додати репозиторій, виконавши наступні команди

wget -nc https://dl.winehq.org/wine-builds/Release.key
sudo apt-key add Release.key
sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ xenial main'

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

sudo apt install --install-recommends winehq-stable

А, якщо ви бажаєте використовувати версію для розробників, тоді скористайтеся наступною командою

sudo apt install --install-recommends winehq-devel

Давайте переглянемо, яка версія Wine встановилася у систему

teacher@teacher-VirtualBox:~$ wine --version
wine-3.0.2

Для конфігурації налаштувань Wine, необхідно запустити програму налаштування за допомогою команди

winecfg

За потреби, налаштуйте представлені параметри, наприклад, оберіть версію Windows 7 або Windows 10.

Дуже часто для запуску Windows-додатків потрібні додаткові бібліотеки або компоненти. Для того, щоб їх можна було б використовувати, необхідно встановити спеціальний скрипт winetricks.

Спочатку завантажуємо його

wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks

Далі додаємо права на виконання

sudo chmod +x winetricks

і переміщуємо у каталог /usr/bin

sudo mv -v winetricks /usr/bin

Запускаємо winetricks командою

winetricks

Відзначаємо опцію Вибрати wineprefix за замовчуванням і натискаємо кнопку Гаразд.

У наступному вікні можна обрати різні варіанти налаштувань Wine. Наприклад, відзначимо пункт Встановити Windows DLL чи компонент(и) і знову погодимось з вибором. Після цього з’явиться список пакунків різних компонентів (Adobe AIR, DirectX, Visual C++ тощо), які можуть стати у нагоді для запуску тих чи інших Windows-програм. Залишається обрати потрібні і встановити їх по черзі.