Как да изтриете сигурно файлове в Linux

Отворете твърдия диск в тавата за гореща смяна

Biehler Michael/Shutterstock.com



Раздробявайте старите файлове с данни по същата причина, поради която раздробявате старите хартиени документи. Ние ви казваме какво трябва да знаете за сигурното изтриване на Linux файлове. Този урок обхваща |_+_| командата и |_+_| пакет от помощни програми.

Изтритите файлове обикновено могат да бъдат възстановени

Изтриването на файл всъщност не го премахва от вашия твърд диск. Всичко се свежда до начина, по който вашата файлова система използва inodes. Това са структурите от данни във файловата система, които съдържат метаданните относно файловете. Името на файла, неговата позиция на твърдия диск, какви атрибути и разрешения има, и т.н., се съхраняват в един inode. Директорията не е нищо повече от самия файл. Такъв, който съдържа имената и номерата на inode на файловете, съдържащи се в директорията.





Когато изтриете файл с |_+_|, файловата система освобождава подходящия inode и коригира файла на директорията. Това маркира пространството на твърдия диск, което файлът е заемал, като неизползвано. Представете си, че влизате в библиотека и преминавате през картотеката, намирате каталожна карта на книга и я разкъсвате. Книгата все още е на рафта. Просто е по-трудно да се намери.

С други думи, пространството, използвано от файла, вече е свободно за използване от други файлове. Но съдържанието на стария файл все още се намира в това пространство. Докато това пространство не бъде презаписано, има голям шанс файлът да бъде извлечен.



Реклама

Но пълното премахване на файл не е толкова лесно, колкото простото презаписване. Както ще видим.

Не правете това със SSD дискове

Тези техники са за традиционните електромеханични твърди дискове (HDD) и не трябва да се използват със твърдотелни устройства (SSD). Няма да работи и ще доведе до допълнителни записи и ненужно износване на вашия SSD. За да изтриете сигурно данни от SSD, трябва да използвате помощната програма, предоставена от производителя на вашия SSD.

СВЪРЗАНИ: Как да изтриете файлове и директории в терминала на Linux



Командата за раздробяване

|_+_| е предназначена да извършете презаписването вместо вас така че изтрит файл не може да бъде възстановен. Той е включен във всички дистрибуции на Linux, които бяха тествани по време на изследването за тази статия, включително Ubuntu, Fedora и Manjaro.

В този пример ще работим в директория, наречена ~/research, която съдържа много текстови файлове. Той също така съдържа някои други директории, които от своя страна съдържат други файлове. Ще приемем, че тези файлове са чувствителни и трябва да бъдат изтрити изцяло от твърдия диск.

Можем да видим структурата на дървото на директориите, като използваме |_+_| команда, както следва. |_+_| (директория) опция причинява |_+_| да изброява само директории, а не да изброява всички файлове. Структурата на дървото на директориите изглежда така:

shred

Раздробяване на един файл

За да раздробим един файл, можем да използваме следната команда. Опциите, които използваме са:

    u: Освободете и премахнете файла след презаписване. v: Многословна опция, така че |_+_| ни казва какво прави. с: Извършва окончателно презаписване с нули.
secure-delete

Реклама

|_+_| презаписва файла четири пъти по подразбиране. Първите три преминавания използват произволни данни, а последният използва нули, както поискахме. След това премахва файла и презаписва някои от метаданните в inode

раздробявате, правейки четири прохода

Задаване на броя проходи за презаписване

Можем да попитаме |_+_| да използвате повече или по-малко проходи за презаписване с помощта на |_+_| опция (число). |_+_| винаги ще използва поне един пропуск. Номерът, който предоставяме тук, е броят на допълнително пропуски, които изискваме |_+_| да изпълнява. Така че |_+_| винаги ще направи един пропуск повече от номера, който поискаме. За да получите общо три пропуска, ние изискваме допълнителни два пропуска:

rm

Както се очакваше, |_+_| прави три прохода.

По-малко пасове — по-малко раздробяване, ако желаете — очевидно е по-бързо. Но дали е по-малко сигурно? Интересното е, че три паса вероятно са повече от достатъчни.

СВЪРЗАНИ: Трябва само веднъж да изтриете диск, за да го изтриете сигурно

Раздробяване на множество файлове

Заместващите символи могат да се използват с |_+_| за да изберете групи файлове, които да бъдат изтрити. |_+_| представлява множество символи, а |_+_| представлява единичен знак. Тази команда ще изтрие всички останали файлове Preliminary_Notes в текущата работна директория.

shred

Всеки от останалите файлове се обработва от |_+_| на свой ред.

|_+_| няма рекурсивна опция, така че не може да се използва за изтриване на дървета на директории от вложени директории.

Проблемът със сигурното изтриване на файлове

Добър като |_+_| е, има проблем. Съвременните файлови системи за журналиране като ext3 и ext4 полагат огромни усилия, за да гарантират, че няма да се счупят, да се повредят или да загубят данни. И с файловите системи за журналиране, няма гаранция, че презаписването действително се извършва върху пространството на твърдия диск, използвано от изтрития файл.

Ако всичко искате да сте спокойни, че файловете са били изтрити малко по-задълбочено от |_+_| би го направил, тогава |_+_| вероятно е добре. Но не правете грешката да си мислите, че данните определено са изчезнали и са напълно невъзстановими. Това е напълно възможно не случаят.

СВЪРЗАНИ: Защо не можете да „изтриете сигурно“ файл и какво да направите вместо това

Пакетът за сигурно изтриване

|_+_| командите се опитват да преодолеят най-добрите усилия за записване на файлови системи и да успеят да презапишат файла сигурно. Но важат абсолютно същите предупреждения. Все още няма гаранция, че презаписването действително се извършва в областта на твърдия диск, която ви е необходима, за да заличите файла, който ви интересува. Има повече шанс, но няма гаранция.

Реклама

|_+_| командите използват следната последователност от презаписване и действия:

  • 1 презаписване с байтове стойност 0xFF.
  • 5 презаписа със произволни данни.
  • 27 се презаписват със специални стойности, определени от Петер Гутман.
  • Още 5 презаписвания със произволни данни.
  • Преименувайте файла на произволна стойност.
  • Съкратете файла.

Ако всичко това ви изглежда прекомерно, вие сте в добра компания. Също така изглежда прекомерно на Питър Гутман, професор в университета в Окланд. Той публикува статия през 1996 г обсъждане на тези техники , от който произлиза градският мит, че трябва да използвате всички техники, обсъждани в този документ наведнъж.

Оттогава Питър Гутман се опита да върне духа обратно в бутилката, казвайки, че Доброто почистване с произволни данни ще свърши точно толкова добре, колкото може да се очаква.

Но ние сме там, където сме, и това е наборът от техники, използвани от |_+_| команди. Но първо трябва да ги инсталираме.

Инсталиране на защитено изтриване

Използвайте |_+_| за да инсталирате този пакет във вашата система, ако използвате Ubuntu или друга базирана на Debian дистрибуция. В други дистрибуции на Linux използвайте вместо това инструмента за управление на пакети на вашата Linux дистрибуция.

tree

Има четири команди, включени в |_+_| пакет.

  1. |_+_| е защитен |_+_|, използван за изтриване на файлове чрез изтриването им и презаписване на пространството на твърдия им диск.
  2. |_+_| е инструмент за презаписване на цялото свободно пространство на вашия твърд диск.
  3. |_+_| се използва за презаписване и почистване на вашето пространство за размяна.
  4. |_+_| се използва за почистване на вашата RAM памет.

Командата srm

Използвате |_+_| команда, както бихте използвали |_+_| команда. За да премахнете един файл, използвайте следната команда. |_+_| (нули) опцията причинява |_+_| да използвате нули за окончателното изтриване вместо произволни данни. |_+_| (подробна) опция прави |_+_| информирайте ни за напредъка му.

-d

Реклама

Първото нещо, което ще забележите е, че |_+_| е бавен. Той предоставя известна визуална обратна връзка, докато работи, но е облекчение, когато отново видите командния ред.

Можете да използвате |_+_| (намаляване на сигурността) опция за намаляване на броя на пасовете до две, което ускорява нещата драстично.

tree

|_+_| ни информира, че това — според него — е по-малко сигурно, но все пак изтрива и презаписва файла вместо нас.

Можете да използвате опцията -l (намаляване на сигурността) два пъти, за да намалите броя на преминаванията до едно.

shred

Използване на srm с множество файлове

Можем също да използваме заместващи знаци с |_+_|. Тази команда ще изтрие и изтрие останалите части от първа глава:

shred

Файловете се обработват от |_+_| на свой ред.

Изтриване на директории и тяхното съдържание със srm

|_+_| (рекурсивна) опция ще направи |_+_| изтрийте всички поддиректории и тяхното съдържание. Можете да предадете пътя към първата директория на |_+_|.

Реклама

В този пример изтриваме всичко от текущата директория, ~/research. Това означава, че всички файлове в ~/research и всички поддиректории са надеждно премахнати.

shred

srm започва да обработва директориите и файловете.

В крайна сметка ви връща към командния ред. На тестовата машина, на която беше изследвана тази статия, това отне около един час, за да се премахнат около 200 файла, разпределени между текущата директория и три вложени директории.

Всички файлове и поддиректории бяха премахнати според очакванията.

Командата sfill

Ами ако сте загрижени за файл, който сте изтрили с помощта на rm, как можете да преминете през тази стара основа и да се уверите, че е презаписан? |_+_| командата ще презапише цялото свободно пространство на вашия твърд диск.

Докато прави това, ще забележите, че имате все по-малко свободно място на вашия твърд диск, чак до точката, в която изобщо няма свободно място. Когато |_+_| завършва, той освобождава цялото свободно пространство обратно за вас. Ако администрирате система с множество потребители, това би било много разрушително, така че това е задача за поддръжка, която трябва да се извършва извън работно време.

Реклама

Дори на компютър с един потребител, загубата на място на твърдия диск означава, че е неизползваем веднъж |_+_| използва по-голямата част от пространството. Това е нещо, от което бихте започнали и след това ще се отдалечите.

За да се опитате да ускорите малко нещата, можете да използвате |_+_| опция (намаляване на сигурността). Другите опции са |_+_| (подробно) и |_+_| (нули) опции, които сме виждали по-рано. Тук питаме |_+_| за сигурно презаписване на цялото свободно пространство в директорията /home.

-n

Настани се удобно. На тестовия компютър — който има само 10 GB твърд диск — това беше започнато в средата на следобеда и завърши някъде през нощта.

Ще се изпари с часове. И това е с |_+_| опция (намаляване на сигурността). Но в крайна сметка ще бъдете върнати в командния ред.

Командата swap

|_+_| командата презаписва паметта във вашия суап дял. Първото нещо, което трябва да направим, е да идентифицираме вашия суап дял. Можем да направим това с |_+_| команда, която изброява блокови устройства.

shred

Трябва да намерите размяната на думата и да си отбележите блоковото устройство, към което е свързана.

Реклама

Можем да видим, че суап дялът е свързан към |_+_|.

Трябва да изключим записите на диска в swap дяла за времето на презаписването. Ще използваме |_+_| команда:

shred

Вече можем да използваме |_+_| команда.

Ще използваме |_+_| като част от командния ред за |_+_| команда. Ще използваме и |_+_| (подробна) опция и |_+_| (намаляване на сигурността) опции, които използвахме по-рано.

shred

|_+_| започва да си проправя път през вашия суап дял, като презаписва всичко, което е в него. Не отнема толкова време, колкото |_+_|. Просто така се усеща.

След като приключи, трябва да възстановим суап дяла като активно пространство за размяна. Правим това с |_+_| команда:

shred

Командата sdmem

|_+_| пакетът дори съдържа инструмент за изтриване на чиповете на паметта с произволен достъп (RAM) във вашия компютър.

Реклама

ДА СЕ атака при студено зареждане изисква физически достъп до компютъра ви много малко след като е изключен. Този тип атака може потенциално да позволи извличането на данни от вашите RAM чипове.

Ако смятате, че трябва да се предпазите от този тип атаки – и за повечето хора би било трудно да си мислят, че трябва – можете да изтриете RAM паметта си, преди да изключите компютъра си. Ще използваме |_+_| (подробно) и |_+_| (намаляване на сигурността) опциите още веднъж.

shred

Прозорецът на терминала ще се изпълни със звездички като индикация, че |_+_| пробива си път през вашата RAM памет.

Лесната опция: Просто криптирайте вашето устройство

Вместо сигурно изтриване на файлове, защо да не защитите твърдия си диск или домашната си папка с помощта на криптиране?

Ако направите това, никой няма да има достъп до нищо, независимо дали е жив или изтрит файл. И не е нужно да сте нащрек и да не забравяте да изтриете сигурно чувствителни файлове, защото всичките ви файлове вече са защитени.

Повечето дистрибуции на Linux питат дали искате да използвате криптиране по време на инсталиране. Да кажете „да“ ще спести много бъдещи влошавания. Не можете да работите с тайна или чувствителна информация. Но ако смятате, че можете да дадете или продадете компютъра на някой друг, когато приключите с него, криптирането ще опрости и това.

Linux команди
Файлове катран · pv · котка · такт · chmod · сцепление · разл · sed · С · човек · pushd · popd · fsck · тестов диск · сек · fd · пандока · CD · $PATH · awk · присъединяване · jq · сгънете · уникален · journalctl · опашка · състояние · ls · fstab · изхвърли · по-малко · chgrp · chown · rev · виж · струни · Тип · преименувайте · цип · разархивирайте · монтиране · umount · Инсталирай · fdisk · mkfs · rm · rmdir · rsync · df · gpg · ние · нано · mkdir · от · вътрешен · кръпка · преобразувам · rclone · накъсайте · SRM
процеси псевдоним · екран · връх · хубаво · renice · напредък · strace · система · tmux · chsh · история · в · партида · Безплатно · който · dmesg · потребителски мод · п.с · chroot · xargs · tty · мизичко · lsof · vmstat · изчакване · стена · да · убиват · сън · sudo · неговата · време · groupadd · потребителски мод · групи · lshw · изключвам · рестартирайте · Спри се · изключване · passwd · lscpu · crontab · дата · bg · fg
Работа в мрежа netstat · пинг · трасиране · ip · ss · кой е · fail2ban · bmon · Вие · пръст на ръката · nmap · ftp · къдрица · wget · Кой · кой съм аз · В · iptables · ssh-keygen · ufw

СВЪРЗАНИ: Най-добрите Linux лаптопи за разработчици и ентусиасти

ПРОЧЕТЕТЕ СЛЕДВАЩО Снимка на профила на Дейв Маккей Дейв Маккей
Дейв Маккей за първи път използва компютри, когато перфорираната хартиена лента беше на мода и оттогава той програмира. След повече от 30 години в ИТ индустрията, той вече е технологичен журналист на пълен работен ден. По време на кариерата си той е работил като програмист на свободна практика, мениджър на международен екип за разработка на софтуер, ръководител на проекти за ИТ услуги и, последно, като служител по защита на данните. Неговото писане е публикувано от howtogeek.com, cloudsavvyit.com, tenterpriser.com и opensource.com. Дейв е евангелист на Linux и привърженик на отворен код.
Прочетете пълната биография

Интересни Статии