Як безпечно видалити файли в Linux

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

Видалені файли зазвичай можна відновити

Видалення файлу насправді не видаляє його з жорсткого диска. Все залежить від того, як ваша файлова система використовує inodes. Це структури даних у файловій системі, які містять метадані щодо файлів. Ім’я файлу, його положення на жорсткому диску, атрибути та дозволи тощо зберігаються в индексному коді. Каталог – це не більше, ніж сам файл. Такий, який містить імена та номери inode файлів, що містяться в каталозі.

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

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

Але повністю позбутися від файлу не так просто, як просто перезаписати їх. Як ми побачимо.

Не робіть цього з SSD

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

Команда shred

shred призначений для виконати перезапис за вас тому видалений файл неможливо відновити. Він включений до всіх дистрибутивів Linux, які були перевірені під час дослідження для цієї статті, включаючи Ubuntu, Fedora і Manjaro.

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

Ми можемо побачити структуру дерева каталогів, використовуючи команду дерева, як показано нижче. Параметр -d (каталог) змушує дерево відображати лише каталоги, а не всі файли. Структура дерева каталогів виглядає так:

tree -d

Подрібнення одного файлу

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

  Як знайти повторювані файли та очистити їх у Linux за допомогою FSlint

u: Звільніть та видаліть файл після перезапису.
v: Дослівний параметр, так що shred розповідає нам, що він робить.
z: виконує остаточне перезаписування нулями.

shred -uvz Preliminary_Notes.txt_01.txt

shred за замовчуванням чотири рази перезаписує файл. Перші три проходи використовують випадкові дані, а останній – нулі, як ми і просили. Потім він видаляє файл і перезаписує деякі метадані в inode

Встановлення кількості проходів перезапису

Ми можемо попросити shred використовувати більше або менше проходів перезапису, використовуючи параметр -n (число). shred завжди використовуватиме принаймні один прохід. Число, яке ми надаємо тут, — це кількість додаткових проходів, для виконання яких нам потрібно подрібнити. Тому shred завжди зробить на один прохід більше, ніж ми просимо. Щоб отримати загалом три перепустки, ми просимо додаткові два перепустки:

shred -uvz -n 2 Preliminary_Notes.txt_02.txt

Як і очікувалося, shred робить три проходи.

Менше проходів — менше подрібнень, якщо хочете — очевидно швидше. Але чи це менш безпечно? Трьох проходів, що цікаво, мабуть, більш ніж достатньо.

Подрібнення кількох файлів

Підстановкові знаки можна використовувати разом із shred для вибору груп файлів, які потрібно стерти. * позначає кілька символів, а ? представляє один символ. Ця команда видалить усі файли «Preliminary_Notes», що залишилися в поточному робочому каталозі.

shred -uvz -n 2 Preliminary_Notes_*.*

Решта файлів по черзі обробляються методом shred.

shred не має рекурсивної опції, тому його не можна використовувати для стирання дерев каталогів вкладених каталогів.

Проблема з безпечним видаленням файлів

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

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

Люкс із захищеним видаленням

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

Команди secure-delete використовують таку послідовність перезаписів і дій:

1 перезапис байтами значення 0xFF.
5 перезаписів випадковими даними.
27 перезаписує спеціальними значеннями, визначеними Пітером Гутманом.
Ще 5 перезаписів випадковими даними.
Перейменуйте файл на випадкове значення.
Обріжте файл.

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

З тих пір Пітер Гутманн намагався повернути джина в пляшку, сказавши: «Хороше очищення випадковими даними буде працювати приблизно так, як можна очікувати».

  4 найкращі термінальні програми для Linux

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

Встановлення secure-delete

Використовуйте apt-get, щоб встановити цей пакунок у вашу систему, якщо ви використовуєте Ubuntu або інший дистрибутив на базі Debian. В інших дистрибутивах Linux замість цього використовуйте інструмент керування пакетами свого дистрибутива Linux.

sudo apt-get install secure-delete

У пакет безпечного видалення входять чотири команди.

srm — це безпечний rm, який використовується для стирання файлів шляхом їх видалення та перезапису місця на жорсткому диску.
sfill – це інструмент для перезапису всього вільного місця на жорсткому диску.
sswap використовується для перезапису та очищення простору підкачки.
sdmem використовується для очищення оперативної пам’яті.

Команда srm

Ви використовуєте команду srm так само, як і команду rm. Щоб видалити один файл, скористайтеся такою командою. Параметр -z (нулі) змушує smr використовувати нулі для остаточного стирання замість випадкових даних. Параметр -v (дослівний) змушує srm інформувати нас про свій прогрес.

srm -vz Chapter_One_01.txt

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

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

srm -lvz Chapter_One_02.txt

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

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

srm -llvz Chapter_One_03.txt

Використання srm з кількома файлами

Ми також можемо використовувати символи підстановки з srm. Ця команда видалить і видалить решту частини першої глави:

srm -vc Chapter_One_0?.txt

Файли обробляються srm по черзі.

Видалення каталогів та їх вмісту за допомогою srm

Параметр -r (рекурсивний) змусить srm видалити всі підкаталоги та їх вміст. Ви можете передати шлях до першого каталогу в srm.

У цьому прикладі ми видаляємо все поточний каталог ~/research. Це означає, що всі файли в ~/research і всі підкаталоги надійно видалені.

srm -vz *

srm починає обробляти каталоги та файли.

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

Усі файли та підкаталоги видалено, як очікувалося.

Команда sfill

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

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

  Як встановити Cosy Audiobook Player на Linux

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

Щоб спробувати трохи пришвидшити роботу, ви можете використовувати параметр -l (зменшення безпеки). Інші параметри – це параметри -v (докладний) і -z (нулі), які ми бачили раніше. Тут ми просимо sfill безпечно перезаписати весь вільний простір у каталозі /home.

sudo sfill -lvz /home

Влаштовуйте себе зручно. На тестовому комп’ютері, який має лише жорсткий диск об’ємом 10 ГБ, це було розпочато в середині дня і завершилося десь за ніч.

Воно буде збиватися годинами. І це з опцією -l (зменшення безпеки). Але зрештою ви повернетеся до командного рядка.

Команда swap

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

sudo blkid

Вам потрібно знайти слово «swap» і записати блочний пристрій, до якого він приєднаний.

Ми бачимо, що розділ підкачки підключений до /dev/sda5.

Нам потрібно вимкнути запис диска в розділ підкачки на час перезапису. Ми будемо використовувати команду swapoff:

sudo swapoff /dev/sda5

Тепер ми можемо використовувати команду sswap.

Ми будемо використовувати /dev/sda5 як частину командного рядка для команди sswap. Ми також будемо використовувати параметри -v (докладний) і -ll (зменшення безпеки), які ми використовували раніше.

sudo sswap -llv /dev/sda5

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

Після його завершення нам потрібно відновити розділ підкачки як активний простір підкачки. Робимо це за допомогою команди swapon:

sudo swapon /dev/sda5

Команда sdmem

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

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

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

sudo sdmem -vll

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

Простий варіант: просто зашифруйте свій диск

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

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

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