Управління файловою системою та запам’ятовувальними пристроями в операційній системі Linux є важливим аспектом для ефективної роботи з цією платформою. Linux, завдяки своїй відкритій природі та гнучкості, надає користувачам та адміністраторам величезний контроль над файловою системою і зберіганням даних. Файлова система Linux – це важливий компонент операційної системи, який дозволяє організовувати та зберігати дані. У Linux існує багато різних файлових систем, кожна з яких має свої унікальні переваги та особливості. Користувачі можуть створювати, копіювати, переміщувати, видаляти та перейменовувати файли та каталоги. Також вони можуть надавати різним користувачам та групам права доступу до файлів.
Запам’ятовувальні пристрої в Linux: Запам’ятовувальні пристрої, такі як жорсткі диски, SSD, USB-накопичувачі та інші, є основними засобами зберігання даних в Linux. Управління цими пристроями включає в себе монтаж (підключення) і розмонтаж (відключення) носіїв, форматування для підготовки до зберігання даних, а також моніторинг доступного дискового простору та діагностику стану пристроїв. Linux також підтримує різні рівні захисту даних, включаючи резервне копіювання та RAID-конфігурації, які допомагають уникнути втрати даних у випадку відмови дискового обладнання. Ключові команди та інструменти: У Linux існує низка корисних команд та інструментів для управління файловою системою та запам’ятовувальними пристроями. Ці інструменти дозволяють користувачам та адміністраторам ефективно взаємодіяти з файлами та зберігальним обладнанням, надаючи повний контроль над даними та ресурсами системи. У підсумку, управління файловою системою та запам’ятовувальними пристроями в Linux – це важливий аспект, який допомагає забезпечити надійну зберігання та доступ до даних, забезпечуючи високу ефективність та безпеку операційної системи. Ця система дозволяє користувачам ефективно працювати з файлами та зберігальними пристроями, забезпечуючи надійність та безпеку їхніх даних.
Спочатку ми розглянемо, як додаткові диски та інші запам’ятовувальні пристрої монтуються на цю файлову систему, що ведуть до каталогу / (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 drwxrxrx 1 root root 160 May 16 12:44 block snip lrwxrwxrwx 1 root root 3 May 16 12:44 cdrom > sr0 snip drwxrxrx 2 root root 60 May 16 12:44 cpu snip
Пристрої за замовчуванням відображаються в алфавітному порядку. Ви можете впізнати деякі пристрої, такі як cdrom і cpu, але інші мають досить загадкові назви. Кожен пристрій у вашій системі представлено файлом у каталозі /dev, включаючи пристрої, які ви, ймовірно, ніколи не використовували або навіть не підозрювали, що існують. Якщо ви це зробите, є файл пристрою, який чекає на його використання.
Якщо ви трохи прокрутите цей екран вниз, ви побачите більше списків пристроїв. Особливий інтерес представляють пристрої sda1, sda2, sda3, sdb і sdb1, які представляють собою жорсткий диск і його розділи, а також флешку і її розділи.
snip brwrw 1 root root 8, 0 May 16 12:44 sda brwrw 1 root root 8, 1 May 16 12:44 sda1 brwrw 1 root root 8, 2 May 16 12:44 sda2 brwrw 1 root root 8, 5 May 16 12:44 sda5 brwrw 1 root root 8, 16 May 16 12:44 sdb brwrw 1 root root 8, 17 May 16 12:44 sdb1 snip
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 102: 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-диски. Ці пристрої вимагають більш високої швидкості передачі даних і, отже, надсилання та отримання даних блоками (багато символів або байтів одночасно). Дізнавшись, чи є пристрій символьним чи блокуючим, ви можете легко отримати більше інформації про нього, як ви побачите далі.
Команда 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 103: 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 (скорочення від таблиці файлової системи), який зчитується системою при кожному завантаженні.
Якщо ви використовуєте фон 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 1KBlocks 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 104: 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 utillinux 2.20.1 e2fsck 1.42.5 (29Jul2012) /dev/sda1 is mounted e2fsck: Cannot continue, aborting. Listing 105: 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 utillinux 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