№10. Основи LINUX для хакерів (Управління файловою системою та запам’ятовувальними пристроями)

25 серпня 2023 3 хвилин Автор: Lady Liberty

Ефективне управління файловою системою та запам’ятовувальними пристроями в Linux

Управління файловою системою та запам’ятовувальними пристроями в операційній системі Linux є важливим аспектом для ефективної роботи з цією платформою. Linux, завдяки своїй відкритій природі та гнучкості, надає користувачам та адміністраторам величезний контроль над файловою системою і зберіганням даних.  Файлова система Linux – це важливий компонент операційної системи, який дозволяє організовувати та зберігати дані. У Linux існує багато різних файлових систем, кожна з яких має свої унікальні переваги та особливості. Користувачі можуть створювати, копіювати, переміщувати, видаляти та перейменовувати файли та каталоги. Також вони можуть надавати різним користувачам та групам права доступу до файлів.

Запам’ятовувальні пристрої в Linux: Запам’ятовувальні пристрої, такі як жорсткі диски, SSD, USB-накопичувачі та інші, є основними засобами зберігання даних в Linux. Управління цими пристроями включає в себе монтаж (підключення) і розмонтаж (відключення) носіїв, форматування для підготовки до зберігання даних, а також моніторинг доступного дискового простору та діагностику стану пристроїв. Linux також підтримує різні рівні захисту даних, включаючи резервне копіювання та RAID-конфігурації, які допомагають уникнути втрати даних у випадку відмови дискового обладнання. Ключові команди та інструменти: У Linux існує низка корисних команд та інструментів для управління файловою системою та запам’ятовувальними пристроями. Ці інструменти дозволяють користувачам та адміністраторам ефективно взаємодіяти з файлами та зберігальним обладнанням, надаючи повний контроль над даними та ресурсами системи. У підсумку, управління файловою системою та запам’ятовувальними пристроями в Linux – це важливий аспект, який допомагає забезпечити надійну зберігання та доступ до даних, забезпечуючи високу ефективність та безпеку операційної системи. Ця система дозволяє користувачам ефективно працювати з файлами та зберігальними пристроями, забезпечуючи надійність та безпеку їхніх даних.

Каталог пристроїв /DEV

Спочатку ми розглянемо, як додаткові диски та інші запам’ятовувальні пристрої монтуються на цю файлову систему, що ведуть до каталогу / (root). Монтування в цьому контексті просто означає приєднання дисків або дисків до файлової системи, щоб зробити їх доступними для операційної системи (ОС). Для вас, як хакера, необхідно розбиратися в системі управління файлами та запам’ятовувальними пристроями, як у власній системі, так і, найчастіше, в системі вашого об’єкта. Хакери зазвичай використовують зовнішні носії для завантаження даних, інструментів злому або навіть своєї ОС. Після того, як ви потрапите на цільову систему, ви повинні зрозуміти, з чим ви працюєте, де знайти конфіденційні або інші критично важливі файли, як змонтувати диск до цільового пристрою, і чи можете ви розмістити ці файли у вашій системі. У цьому розділі ми розглянемо всі ці теми, а також те, як керувати пристроями зберігання даних і контролювати їх.

Ми почнемо з каталогу, відомого як dev, який ви, напевно, вже помітили в структурі каталогів: dev — скорочення від device, і кожен пристрій у Linux представлений власним файлом у каталозі /dev. Почнемо з роботи з /dev.

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

kali >cd/dev
kali >ls-l
total 0
crw­­­­­­­ 1 root root 10,175 May 16 12:44 agpgart
crw­­­­­­­ 1 root root 10,235 May 16 12:44 autofs
drwxr­xr­x 1 root root 160 May 16 12:44 block
­­snip­­
lrwxrwxrwx 1 root root 3 May 16 12:44 cdrom ­> sr0
­­snip­­
drwxr­xr­x 2 root root 60 May 16 12:44 cpu
­­snip­

Пристрої за замовчуванням відображаються в алфавітному порядку. Ви можете впізнати деякі пристрої, такі як cdrom і cpu, але інші мають досить загадкові назви. Кожен пристрій у вашій системі представлено файлом у каталозі /dev, включаючи пристрої, які ви, ймовірно, ніколи не використовували або навіть не підозрювали, що існують. Якщо ви це зробите, є файл пристрою, який чекає на його використання.

Якщо ви трохи прокрутите цей екран вниз, ви побачите більше списків пристроїв. Особливий інтерес представляють пристрої sda1, sda2, sda3, sdb і sdb1, які представляють собою жорсткий диск і його розділи, а також флешку і її розділи.

­­snip­­
brw­rw­­­­ 1 root root 8, 0 May 16 12:44 sda
brw­rw­­­­ 1 root root 8, 1 May 16 12:44 sda1
brw­rw­­­­ 1 root root 8, 2 May 16 12:44 sda2
brw­rw­­­­ 1 root root 8, 5 May 16 12:44 sda5
brw­rw­­­­ 1 root root 8, 16 May 16 12:44 sdb
brw­rw­­­­ 1 root root 8, 17 May 16 12:44 sdb1
­­snip­­

Як Linux представляє пристрої зберігання даних

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

Спочатку Linux представляв дискети (пам’ятаєте їх?) як fd0, а жорсткі диски як мали. Ви все ще іноді побачите ці представлення дисків у застарілих системах Linux, але сьогодні більшість дискет зникли (слава Богу). Незважаючи на це, старі застарілі жорсткі диски, які використовували інтерфейс IDE або EIDE, все ще представлені у формі малого. Нові диски інтерфейсу Serial ATA (SATA) і жорсткі диски Small Computer System Interface (SCSI) представлені у вигляді SDA. Диски іноді розділяються на розділи, відомі як розділи, які представлені в системі маркування цифрами, як ви побачите далі.

Коли системи мають більше одного жорсткого диска, Linux просто називає їх послідовно, збільшуючи останню букву в алфавітному порядку, тому перший диск – sda, а другий диск – sdb, третій диск – sdc і так далі (див. Таблицю 10-1). Серійну букву після sd часто називають основним номером.

Таблиця 10-1: Система іменування пристроїв

Розділи диска

Деякі диски можна розділити на розділи, щоб керувати інформацією та відокремлювати її. Наприклад, ви можете відокремити жорсткий диск, щоб ваш файл підкачки, домашній каталог та / каталог знаходилися на окремих розділах – ви можете зробити це з ряду причин, включаючи спільний доступ до ресурсів та послаблення дозволів за замовчуванням. Linux позначає кожен розділ другорядним номером, який стоїть після позначення диска. Таким чином, першим розділом на першому диску SATA буде sda1. Тоді другий розділ буде sda2, третій sda3 і так далі, як показано в таблиці 10-2.

Таблиця 10-2: Система маркування розділів

Іноді вам може знадобитися переглянути розділи у вашій системі Linux, щоб побачити, які з них у вас є та скільки ємності доступно в кожному. Зробити це можна за допомогою утиліти fdisk . За допомогою перемикача -l з fdisk відображаються всі розділи всіх дисків, як показано в списку 102.

kali >fdisk-l
Disk /dev/sda: 20GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x7c06cd70
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 39174143 39172096 18.7G 83 Linux
/dev/sda2 39176190 41940991 2764802 1.3G 5 Extended
/dev/sda5 39176192 41940991 2764800 1.3G 82 Linux swap / Solaris
Disk /dev/sdb: 29.8 GiB, 31999393792 bytes, 62498816 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xc3072e18
Device Boot Start End Sectors Size Id Type
/dev/sdb1 32 62498815 62498784 29.8G 7 HPFS/NTFS/exFAT
Listing 10­2: Listing partitions with fdisk

Як ви можете бачити  в списку 102, пристрої sda1, sda2 і sda5 перераховані в першій строфі. Ці три пристрої складають віртуальний диск з моєї віртуальної машини, який являє собою диск розміром 20 ГБ з трьома розділами, включаючи розділ підкачки (sda5), який діє як віртуальна оперативна пам’ять – подібно до файлів сторінок у Windows – коли ємність оперативної пам’яті перевищена.

Якщо ви проскануєте  список 102 до третьої строфи, ви побачите вихід другого пристрою, позначений sdb1 — мітка b говорить нам, що цей диск відокремлений від перших трьох пристроїв. Це моя флешка на 64 ГБ. Зауважте, що fdisk вказує на те, що це

Тип файлової системи HPFS/NTFS/ExFAT. Ці типи файлів – високопродуктивна файлова система

(HPFS), файлова система нової технології (NTFS) і розширена таблиця розміщення файлів

(exFAT) — не є рідними для систем Linux, а скоріше для систем macOS та Windows. Варто вміти розпізнавати типи файлів, рідні для різних систем, коли ви досліджуєте. Файлова система може вказувати, на якому комп’ютері було відформатовано диск, що може бути цінною інформацією. Kali здатна використовувати USB-флеш-накопичувачі, створені в багатьох різних операційних системах.

Як ви бачили в розділі 1, файлова система Linux структурована значно інакше, ніж Windows та інші невільні операційні системи. Крім того, спосіб зберігання та керування файлами також відрізняється в Linux. Нові версії Windows використовують файлову систему NTFS, тоді як старі системи Windows використовують системи таблиці розміщення файлів (FAT).

Linux використовує ряд різних типів файлових систем, але найпоширенішими є ext2, ext3 і ext4. Це все ітерації файлової системи ext (або extended), причому ext4 є останньою.

Символьні і блокові пристрої

Ще дещо слід зазначити щодо іменування файлів пристроїв у каталозі /dev, це те, що перша позиція містить або c, або b. Ви можете побачити це в списку 10-1 на початку більшості записів, і це виглядає приблизно так:

crw­­­­­­­ 1 root root 10,175 May 16 12:44 agpgart

Ці літери представляють два способи передачі даних пристроями всередину і назовні. C означає символ, і ці пристрої відомі, як і слід було очікувати, як символьні пристрої. Зовнішні пристрої, які взаємодіють із системою, надсилаючи та отримуючи дані символ за символом, такі як миші або клавіатури, є символьними пристроями.

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

Список блокових пристроїв та інформації за допомогою lsblk

Команда Linux lsblk, скорочення від list block, містить деяку основну інформацію про кожен блоковий пристрій, перелічений у /dev. Результат схожий на вихід  з fdisk -l, але він також буде відображати пристрої з декількома розділами в своєрідному дереві, показуючи кожен пристрій з його розділами як гілки, і не вимагає прав root для запуску.  Наприклад, у списку 103 ми бачимо sda з гілками sda1, sda2 та sda5.

kali >lsblk
Name MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda1 8:0 0 20G 0 disk
|­sda1 8:1 0 18.7G 0 part /
|­sda2 8:2 0 1K 0 part
|­sda5 8:5 0 1.3G 0 part [SWAP]
sdb 8:16 1 29.8G 0 disk
|­sdb1 8.17 1 29.8G 0 disk /media
sr0 11:0 1 2.7G 0 rom
Listing 10­3: Listing block device information with lsblk

Вихід включає дисковод як fd0 і DVD-привід як sr0, хоча жоден з них не є в моїй системі — це просто утримання від застарілих систем. Ми також можемо побачити інформацію про точку монтування диска — це положення, в якому диск був підключений до файлової системи. Зверніть увагу, що жорсткий диск sda1 монтується на / і флешка монтується на / media. Ви побачите більше про значення цього в наступному розділі.

Монтаж і демонтаж

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

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

Як уже згадувалося, точка в дереві каталогів, де підключені пристрої, відома як точка монтування. Двома основними точками монтування в Linux є /mnt і /media. Як правило, внутрішні жорсткі диски монтуються на /mnt, а зовнішні USB-пристрої, такі як флеш-накопичувачі та зовнішні жорсткі диски USB, монтуються на /media, хоча технічно можна використовувати будь-який каталог.

Самостійний монтаж запам’ятовуючих пристроїв

У деяких версіях Linux вам потрібно змонтувати диск вручну, щоб отримати доступ до його вмісту, тому цій навичці варто навчитися. Щоб змонтувати диск у файловій системі, скористайтеся командою mount . Точкою монтування пристрою повинен бути порожній каталог; Якщо змонтувати пристрій у каталозі, який містить підкаталоги та файли, змонтований пристрій буде покривати вміст каталогу, роблячи їх невидимими та недоступними. Отже, щоб змонтувати новий жорсткий диск sdb1 у каталозі /mnt, потрібно ввести наступне:

kali >mount/dev/sdb1/mnt

Цей жорсткий диск повинен бути доступний для доступу. Якщо ви хочете змонтувати флеш-накопичувач sdc1 у каталозі /media, вам слід ввести це:

kali >mount /dev/sdc1 /media

Файлові системи, змонтовані в системі, зберігаються у файлі за адресою /etc/fstab (скорочення від таблиці файлової системи), який зчитується системою при кожному завантаженні.

Демонтування за допомогою umount

Якщо ви використовуєте фон Mac або Windows, можливо, ви демонтували диск, не знаючи про це. Перш ніж вилучити флеш-пам’ять із системи, ви “виймаєте” її, щоб не пошкодити файли, що зберігаються на пристрої. Eject – це просто ще одне слово для демонтування.

Подібно до  команди монтування, ви можете демонтувати другий жорсткий диск, ввівши команду umount, а потім запис файлу пристрою в каталозі /dev, наприклад /dev/sdb. Зауважте, що команда не пишеться unmount, а скоріше umount (no n).

kali >umount/dev/sdb1

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

Моніторінг файлових систем

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

Отримання інформації про змонтовані диски

Команда df (для вільних дисків) надасть нам основну інформацію про будь-які жорсткі диски або змонтовані пристрої, такі як CD, DVD та флеш-пам’ять, включаючи обсяг використовуваного місця та доступний (див. Список 104). Без будь-яких опцій df за замовчуванням використовує перший диск у вашій системі (в даному випадку sda). Якщо ви хочете перевірити інший диск, просто виконайте команду  df із представленням диска, яке ви хочете перевірити (наприклад, df sdb).

kali >df
Filesystem 1K­Blocks Used Available Use% Mounted on
rootfs 19620732 17096196 1504788 92% /
udev 10240 0 10240 0% /dev
­­snip­­
/dev/sdb1 29823024 29712544 110480 99% /media/USB3.0
Listing 10­4: Getting information on disks and mounted devices with df

Перший рядок виведення тут показує заголовки категорій, а потім ми отримуємо інформацію.

Дисковий простір відводиться блоками розміром 1 КБ. На другому рядку ми бачимо, що rootfs має 19 620 732 однокілобайтних блоків, з яких він використовує 17 096 196 (або близько 92 відсотків), залишаючи доступними 1 504 788. Команда df також повідомляє нам, що ця файлова система змонтована у верхній частині файлової системи /.

В останньому рядку ви можете побачити мою флешку. Зауважте, що він позначений як /dev/sdb1, заповнений майже на 100 відсотків і встановлений на /media/USB3.0.

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

  • sd Жорсткий диск SATA

  • a Перший жорсткий диск

  • 1 Перший розділ на цьому диску

Мій флеш-накопичувач на 64 ГБ позначено як sdb1, а зовнішній диск як sdc1.

Перевірка на помилки

Команда fsck (скорочення від перевірки файлової системи) перевіряє файлову систему на наявність помилок і виправляє пошкодження, якщо це можливо, або ж поміщає погану область в таблицю пошкоджених блоків, щоб позначити її як погану. Щоб запустити команду fsck , потрібно вказати тип файлової системи (за замовчуванням – ext2) і файл пристрою для перевірки. Важливо зазначити, що перед запуском перевірки файлової системи диск необхідно демонтувати. Якщо вам не вдасться демонтувати змонтований пристрій, ви отримаєте повідомлення про помилку, показане в списку 105.

kali >fsck
fsck from util­linux 2.20.1
e2fsck 1.42.5 (29­Jul­2012)
/dev/sda1 is mounted
e2fsck: Cannot continue, aborting.
Listing 10­5: Trying (and failing) to run an error check on a mounted drive

Список 105: Спроба (і невдача) запустити перевірку помилок на змонтованому диску

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

kali >umount/dev/sdb1

Я можу додати опцію -p, щоб fsck автоматично виправляв будь-які проблеми з пристроєм, наприклад:

kali >fsck-p/dev/sdb1

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

kali >fsck-p/dev/sdb1
fsck from util­linux 2.30.2
exfatfsck 1.2.7
Checking file system on /dev/sdb1.
File system version 1.0
Sector size 512 bytes
Cluster size 32 KB
Volume size 7648 MB
Used space 1265 MB
Available space 6383 MB
Totally 20 directories and 111 files.
File system checking finished. No errors found.

Зведення

Розуміння того, як Linux призначає та керує своїми пристроями, має вирішальне значення для будь-якого користувача та хакера Linux. Хакерам потрібно буде знати, які пристрої підключені до системи і скільки вільного місця доступно. Оскільки на пристроях зберігання даних часто виникають помилки, ми можемо перевірити та виправити ці помилки за допомогою fsck. Команда dd здатна зробити фізичну копію пристрою, включаючи будь-які видалені файли.

Ми використовували матеріали з книгиLINUX BASICS FOR HACKERS”, які  написав William Pollock

Інші статті по темі
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.