Файлові системи та керування доступом
Існує безліч файлових систем які використову.ться для структурування інформації. Їх можна поділити на локальні та мережеві. Найбільш популярні наступні:
- Локальні
- FAT (File Allocation Table) - це файлова система, яка використовується в операційних системах MS-DOS та Windows до версії Windows XP. Вона використовує таблицю розподілу файлів (FAT), щоб відстежувати розташування файлів на диску.
- NTFS (New Technology File System) - це файлова система, яка використовується в операційних системах Windows з версії Windows XP. Вона має більш високу надійність та безпеку, ніж FAT, і підтримує більші розміри файлів та дисків.
- EXT (Extended File System) - це файлова система, яка використовується в операційній системі Linux. Вона підтримує розширені атрибути файлів та дозволяє зберігати файли з різними кодуваннями символів.
- Мережеві
- NFS (Network File System) - це мережева файлова система, яка дозволяє доступ до файлів на віддалених комп'ютерах через мережу. Вона використовується в операційних системах Unix та Linux.
- SMB (Server Message Block) - це мережева файлова система, яка дозволяє доступ до файлів на віддалених комп'ютерах через мережу. Вона використовується в операційних системах Windows та macOS.
Файлова система складається з папок, та файлів і має ієрархічну структуру.
FHS (Filesystem Hierarchy Standard)
Поняття "файл" у Linux має дещо інше значення, ніж у Windows. "Файлом" можна назвати звичайний файл, що містить дані та інтерпретується програмою. Директорія також є "файлом", що містить у собі посилання на інші директорії або файли з даними. Файли пристрою вказує на драйвер, завдяки якому система взаємодіє з фізичними пристроями. Є й багато інших типів файлів.
На відміну від Windows, у Linux відсутні класичні диски і вся ієрархія каталогів дотримується стандарту - FHS ( Filesystem Hierarchy Standard).

/ - root каталог. Містить у собі всю ієрархію системи;
/bin- тут знаходяться двійкові виконувані файли. Основні загальні команди, що зберігаються окремо від інших програм у системі (прим.: pwd, ls, cat, ps);/boot- тут розташовані файли, які використовуються для завантаження системи (образ initrd, ядро vmlinuz);- /dev - у цій директорії розташовуються файли пристроїв (драйверів). За допомогою цих файлів можна взаємодіяти з пристроями. Наприклад, якщо це жорсткий диск, можна підключити його до файлової системи. У файл принтера ж можна написати безпосередньо і відправити завдання на друк;
/etc- у цій директорії знаходяться файли конфігурацій програм. Ці файли дають змогу налаштовувати системи, сервіси, скрипти системних демонів;/home- каталог, аналогічний каталогу Users у Windows. Містить домашні каталоги облікових записів користувачів (крім root). При створенні нового користувача тут створюється однойменний каталог з аналогічним ім'ям і зберігає особисті файли цього користувача;/lib- містить системні бібліотеки, з якими працюють програми та модулі ядра;/lost+found- містить файли, відновлені після збою роботи системи. Система проведе перевірку після збою і знайдені файли можна буде подивитися в цьому каталозі;/media- точка монтування зовнішніх носіїв. Наприклад, коли ви вставляєте диск у дисковод, його буде автоматично змонтовано в директорію /media/cdrom;/mnt- точка тимчасового монтування. Файлові системи пристроїв, що підключаються, зазвичай монтуються в цей каталог для тимчасового використання;/opt- тут розташовані додаткові (необов'язкові) додатки. Такі програми зазвичай не підкоряються прийнятій ієрархії і зберігають свої файли в одному підкаталозі (бінарні, бібліотеки, конфігурації);/proc- містить файли, що зберігають інформацію про запущені процеси і про стан ядра ОС;/root- директорія, яка містить файли та особисті налаштування суперкористувача;/run- містить файли стану додатків. Наприклад, PID-файли або UNIX-сокети;/sbin- аналогічно /bin містить бінарні файли. Утиліти потрібні для налаштування та адміністрування системи суперкористувачем;/srv- містить файли сервісів, що надаються сервером (прим. FTP або Apache HTTP);/sys- містить дані безпосередньо про систему. Тут можна дізнатися інформацію про ядро, драйвери та пристрої;/tmp- містить тимчасові файли. Ці файли доступні всім користувачам на читання і запис. Варто зазначити, що цей каталог очищається під час перезавантаження;/usr- містить призначені для користувача додатки та утиліти другого рівня, які використовуються користувачами, а не системою. Вміст доступний тільки для читання (крім root). Каталог має вторинну ієрархію і схожий на кореневий;/var- містить змінні файли. Має підкаталоги, що відповідають за окремі змінні. Наприклад, логи зберігатимуться в/var/log, кеш - в/var/cache, черги завдань - в/var/spool/і так далі.
Дозволи
Щоб отримати доступ до файлів у Linux, використовуються дозволи. Ці дозволи призначаються трьом об'єктам: файлу, групі та іншому об'єкту (тобто всім іншим). Далі ви дізнаєтеся, як застосовувати дозволи.

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

Це відбувається в такому порядку:
- Оболонка перевіряє, чи є ви власником файлу, до якого ви хочете отримати доступ. Якщо ви є цим власником, ви отримуєте дозволи і оболонка припиняє перевірку.
- Якщо ви не є власником файлу, оболонка перевірить, чи є ви учасником групи, у якої є дозволи на цей файл. Якщо ви є учасником цієї групи, ви отримуєте доступ до файлу з дозволами, які для групи встановлені, і оболонка припинить перевірку.
- Якщо ви не є ні користувачем, ні власником групи, ви отримуєте права інших користувачів (Other).
Керування основними правами
Система дозволів Linux була винайдена в 1970-х роках. Оскільки обчислювальні потреби були обмежені в ті роки, базова система дозволів була досить обмежена. Ця система дозволів використовує три дозволи, які можна застосовувати до файлів і каталогів. У цьому розділі ви дізнаєтеся, як використовувати і змінювати ці дозволи.
Розуміння прав на читання, запис і виконання
Три основні дозволи дають вам змогу читати, записувати та виконувати файли. Ефект цих дозволів відрізняється при застосуванні до файлів або каталогів. Стосовно файлу дозвіл на читання дає вам право відкрити файл для читання. Отже, ви можете прочитати його вміст, це означає, що ваш комп'ютер може відкрити файл, щоб щось із ним зробити.
Програмний файл, якому потрібен доступ до бібліотеки, повинен, наприклад, мати доступ для читання до цієї бібліотеки. З цього випливає, що дозвіл на читання - це найосновніший дозвіл, який вам потрібен для роботи з файлами.
Стосовно каталогу читання дозволяє відображати вміст цього каталогу. Ви повинні знати, що цей дозвіл не дозволяє вам читати файли в каталозі. Система дозволів Linux не знає успадкування, і єдиний спосіб прочитати файл - використовувати дозволи на читання для цього файлу.
Як ви, мабуть, можете здогадатися, дозвіл на запис, якщо його застосовано до файлу, дає змогу записувати у файл. Інакше кажучи, дозволяє змінювати вміст наявних файлів. Однак він не дозволяє створювати або видаляти нові файли або змінювати права доступу до файлу. Для цього вам потрібно дати дозвіл на запис каталогу, де ви хочете створити файл. У каталогах цей дозвіл також дозволяє створювати та видаляти нові підкаталоги.
Дозвіл на виконання - це те, що вам потрібно для виконання файлу. Він ніколи не буде встановлений за замовчуванням, що робить Linux практично повністю несприйнятливим до вірусів. Тільки хтось із правами запису на каталог може застосовувати дозвіл на виконання.
Команда chmod
Команда chmod використовується для зміни прав доступу до файлів та директорій в Linux-системах. Вона дозволяє встановлювати права на читання, запис та виконання файлів для власника, групи та інших користувачів.

Синтаксис команди: chmod [опції] [права доступу] [ім'я файлу або директорії]
Опції:
R: рекурсивно змінює права доступу для всіх файлів та піддиректорій в директоріїv: виводить повідомлення про кожну зміну прав доступуc: виводить повідомлення тільки про ті зміни, які були зроблені
Права доступу:
r: право на читання файлуw: право на запис файлуx: право на виконання файлуa: всі користувачіu: власник файлуg: група, до якої належить файлo: інші користувачі
Приклади використання команди chmod:
Змінити права доступу до файлу file.txt для власника на читання та запис, для групи на читання та для інших користувачів на читання:
chmod u+rw, g+r, o+r file.txtЗмінити права доступу до директорії folder на виконання для всіх користувачів:
chmod a+x folderЗмінити права доступу до всіх файлів та піддиректорій в директорії folder на читання, запис та виконання для власника, на читання та виконання для групи та на читання для інших користувачів:
chmod -R u+rwx, g+rx, o+r folder