přejít na obsah přejít na navigaci

Linux E X P R E S, Jak v Linuxu důkladně smazat data

Jak v Linuxu důkladně smazat data

hdd.jpg

Smazání souboru z příkazové řádky nebo v nějakém souborovém správci nezajistí, že se k datům nepůjde dostat. Jak to tedy udělat lépe?


Stiskem klávesy Delete život dat nekončí!

Běžní uživatelé počítačů obvykle příliš nepřemýšlejí o tom, co se stane při mazání nějakého souboru. Pokud ho „smažou“, považují ho prostě za smazaný a mnohdy jsou rádi, že ve skutečnosti smazaný není a najdou ho v „koši“. Ale dejme tomu, že se soubor smaže „natvrdo“, tedy tak, že v žádném koši neskončí (ať už je v daném operačním systému implementován jakkoliv).

Už od počítačového dávnověku smazání souboru neznamená smazání dat. Proč? Především proto, že skutečné mazání trvá dlouho a bývá zbytečné to pokaždé provádět. Ve skutečnosti se pouze prostor dosud obsazený souborem uvolní k dalšímu použití a může být přepsán jinými daty někdy později.

U linuxových souborových systémů to klasicky funguje tak, že pokud hovoříme o souboru, můžeme mít na mysli tři různé věci:

  • název souboru (položku v adresáři),
  • metadata souboru (i-node),
  • vlastní data souboru.

Nejlepší bude to vzít od konce. Vlastní data souboru jsou vlastně bloky (adresovatelné skupiny sektorů na disku nebo jiném úložném médiu) využité k uložení dat. Mohou být různě rozmístěné, klidně nesouvisle (třeba může být proloženo víc souborů), klidně třeba napříč fyzickými úložišti atd. Při běžném smazání souboru zůstanou tyto bloky nedotčeny.

Metadata souboru mají podobu tzv. i-uzlů (i-node), kde jsou umístěny běžné atributy jako časové hodnoty, oprávnění, informace o vlastníkovi a skupině atd., ale také přímé a nepřímé adresy datových bloků (nepřímé odkazují na bloky, v nichž jsou uloženy adresy datových bloků nebo opět adresních). Při smazání souboru se metadata smažou.

Název souboru tvoří položku v adresáři (ten je vlastně speciálním souborem). A teď pozor – jeden soubor může mít více názvů v rámci jednoho zařízení s vytvořeným souborovým systémem. Jsou to tzv. pevné odkazy (hardlinky), které se nijak neliší od názvu souboru vytvořeného jako první, tedy při vytváření souboru.

Uvedený popis je zjednodušený. Moderní souborové systémy jsou komplikovanější, protože sem vstupují speciální funkce, například podsvazky, snapshoty apod.

Jak probíhá běžné mazání souborů

Obvyklé mazání, ať už ze souborového správce nebo příkazem rm, odstraní adresářovou položku. Soubor tedy zmizí z adresáře, přes který byl dosud dostupný. Nemusí to ale znamenat, že zmizí i něco dalšího!

Každý soubor má počitadlo referencí. To se zvýší o jedničku při vytvoření adresářové položky pro soubor (i tu první) a při otevření souboru z běžícího procesu (a také při vytvoření dalšího procesu, který z něj zdědí deskriptory otevřených souborů). Naopak se počitadlo sníží při odstranění adresářové položky nebo zavření souboru. Pokud stav počitadla klesne na nulu, soubor se smaže (odstraní se jeho metadata a uvolní se alokované datové bloky).

Jak důkladně a bezpečně smazat data

Protože se data ve skutečnosti nemažou, lze se k nim později dostat. Není to úplně jednoduché – přestože lze uvolněné bloky použít pro jiné soubory, nelze číst data, která v blocích byla. Funguje to totiž tak, že se bloky alokují až v okamžiku zápisu a zapíše se vždy celý blok, takže se data přepíší.

Pokud má ale někdo na počítači práva uživatele root nebo si zařízení může přenést k jinému počítači a tam připojit (u přenosných disků snadné, u vestavěných samozřejmě složitější), může přes speciální soubory zařízení (například /dev/sda1 a podobně) číst přímo datové bloky, kopírovat si je jinam a pomocí speciálních programů v nich třeba hledat určité vzorky dat.

Otázka „do pranice“: Co se děje s diskem, pokud ho reklamujete u prodejce? Jste si jisti, že tam nemůže pracovat někdo „zvědavý“, kdo se při dlouhé chvíli na disk podívá (samozřejmě pokud je závada taková, že to lze)?

Jsou-li v souborech uložena citlivá data – například citlivé osobní údaje, soukromé klíče apod., je žádoucí jejich obsah opravdu odstranit. Existují na to různé nástroje, na několik z nich se nyní podíváme.

Naprosto bezpečné smazání souborů neexistuje. Je tomu tak kromě jiného proto, že si disky automaticky přesouvají vadné sektory jinam a k původním se dá později dostat, i když třeba ne spolehlivě. Podobně může být možné se dostat i přímo k přepsaným datům v používaných sektorech (i přes opakovaný přepis – doporučuje se až sedminásobný), byť provedené experimenty dokazují, že to v praxi není moc pravděpodobné. Pokud chcete data bezpečně zničit, bez úplné fyzické likvidace disku se to neobejde.

Programy pro mazání dat

BleachBit

Program BleachBit je zajímavý tím, že dělá více užitečných věcí najednou. Odstraní různé nepotřebné soubory, které zůstaly v systému po aplikacích (Firefox, GIMP, rpmbuild a mnoho dalších), zkonsoliduje databáze Firefoxu a kromě jiného také vymaže datové bloky po odstraněných souborech. Má grafické uživatelské rozhraní, lze ho ale spouštět i z příkazové řádky (a tedy skriptovat, automatizovat…).

Okno aplikace BleachBit Okno aplikace BleachBit

wipe

Jednoduchý nástroj wipe slouží pro přepis datových bloků souborů. Může využívat různé metody přepisu, různé počty opakování, různě vybírat soubory k přepisu atd. Nevýhodou je, že přepisuje pouze existující soubory a navíc jen v tom rozsahu, ve kterém aktuálně existují (pokud k souboru dříve patřily i jiné bloky, přepis se jich nedotkne). Pokud to nestačí, jedinou možností je přepsat celé úložné zařízení (přes jeho soubor v /dev).

shred

Utilita shred je přímo součástí Coreutils, což má tu výhodu, že je k dispozici prakticky ve všech linuxových distribucích (a bez instalace speciálních balíčků). Funguje velmi podobně jako wipe, nemá však tak rozsáhlé možnosti parametrizace.

secure-delete

Sada secure-delete se skládá ze čtyř nástrojů, které umožňují mazat data v existujících souborech, volném prostoru, operační paměti a odkládacím prostoru (swap). Lze tak odstranit pozůstatky citlivých dat i z dalších míst, nejen samotného disku.

Pár slov závěrem

Zvláště u moderních souborových systémů je s důkladným odstraňováním dat potíž, protože se data mohou nacházet například ve snapshotech. Proto je obecně dobré pro citlivá data používat šifrovaná úložiště (takže fyzické odnesení média příliš nepomůže v přístupu k datům), při výběru softwaru ověřovat správnou bezpečnostní praxi (například mazání citlivých dat z paměti hned poté, co se s nimi přestane pracovat) a především přemýšlet, zda je vůbec data nutné ukládat (například soukromé klíče mohou být v hardwarových tokenech a nemusejí se „povalovat“ na disku).

Nahoru

Příspěvky

Jak v Linuxu důkladně smazat data
Martin 16. 05. 2016, 19:58:04
Odpovědět  Odkaz 
Takže stačilo by "cat urandom > /dev/sda" či nie? :)
Jak v Linuxu důkladně smazat data
Marek 16. 05. 2016, 20:15:53
Odpovědět  Odkaz 
Což o to, smazat HDD pomocí bootovacího DBAN je hračka. Horší je v Linuxu data dostat zpět, už několikrát se mi stalo, že jsem měl rychlejší prsty, než hlavu a zažitá zkratka shift+del byla katastrofa. Samozřejmě pod Winama jsem to VŽDY! dokázal vylovit, to je hračka. Pod Linuxem, hodiny a dny studování a pokusů a NIC, NIKDY se mi NIC NEPODAŘILO OBNOVIT v tom je to v Linuxu na hovno! Sice se podařilo vylovit nějaká data, ale k ničemu. Nyní jsem už chytřejší a raději házím věci do koše, ten za čas snadno vysypu :-)
Docela by se mi tedy hodil článek, jak data smazaná přes shift+del jednoduše obnovit, protože mě se to opravdu nikdy nepovedlo. Navíc, pokud se budu chtíd dat nadobro zbavit, stačí kladivo :-D :-D :-D
Re: Jak v Linuxu důkladně smazat data
undelete 17. 05. 2016, 09:16:40
Odpovědět  Odkaz 
Přesně tak, zlikvodovat data je hračka zejména na šifrovaných oddílech které jsou celkem nutnost pokud existuje například možnost že by se disk posílal na reklamaci. Ale taky postrádám souborový systém který by uměl odložené mazání.
Tomáš Crhonek Re: Re: Jak v Linuxu důkladně smazat data
Tomáš Crhonek 17. 05. 2016, 10:55:15
Odpovědět  Odkaz 
Máte k disposici několik systémů souborů, které umí snapshoty, které můžete pořizovat třeba každých 10 minut. Nebo ještě lépe, při práci používat nějaký systém správy verzí a mít tak další výhody.

Jinak, počítače jsou od toho, aby plnily lidské příkazy. Opravdu není chybou linuxu, že smazaný soubor je skutečně smazaný a nejde jeho data obnovit (jak kritizuje předřečník). Pokud člověk zadává příkazy, které ve skutečnosti nechce vykonat (zpožděné mazání; mazání tak, aby to šlo vytáhnout apod.), tak je, podle mě, na čase změnit přístup k práci.

Nehledě na to, že o ta data také můžete přijít havárií hw, takže je třeba zálohovat. (Takže ono zpožděné mazání může znamenat vytáhnout onen soubor ze zálohy, pokud jsem jej omylem smazal.)
Re: Re: Re: Jak v Linuxu důkladně smazat data
undelete 18. 05. 2016, 09:57:30
Odpovědět  Odkaz 
Chyba linuxu to není v žádném případě, ale byla by to užitečná vlastnost souborového systému protože lidé chyby prostě dělají. A zrovna mazání je věc co se řeší dost často, počínaje potvrzováním (často potvrzované tak automaticky že nemá skoro význam), přez různé varianty dvoufázového mazání (více či méně povedené koše) až po systémy kde se mazat prostě nedá.
Re: Re: Re: Re: Jak v Linuxu důkladně smazat data
nobody 18. 05. 2016, 19:10:03
Odpovědět  Odkaz 
tohle sem pouzival pred skoro 20 lety na Amize, misto systemoveho FFS(FastFileSystem) sem pouzival journalovaci SFS(SmartFileSystem), ten pri mazani nezavisle na aplikaci presouval soubory do .recycled (neslo o aplikacni kos, ale opravdu o vlastnost filesystemu), z toho to slo bezproblemu vytahnout a zaroven se automaticky mazali nejdrive "smazane" soubory kdyz dochazelo misto :)
SFS jde pouzit i na Linux, ale koukam ze zrovna tuhle .recycled vlastnost nema implementovanou :)
https://en.wikipedia.org/wiki/Smart_File_System
http://home.elka.pw.edu.pl/~mszyprow/programy/asfs/asfs.txt
Jak v Linuxu důkladně smazat data
Pepan 16. 05. 2016, 20:24:50
Odpovědět  Odkaz 
Hezky napsaný článek moc díky!
Petr Valach Jak v Linuxu důkladně smazat data
Petr Valach 16. 05. 2016, 22:02:28
Odpovědět  Odkaz 
Doufám, Lukáši, že další článek bude o opaku - jak zrestaurovat data :))
Lukáš Jelínek Re: Jak v Linuxu důkladně smazat data
Lukáš Jelínek 17. 05. 2016, 14:52:50
Odpovědět  Odkaz 
Dobrý nápad ;-)
Jak v Linuxu důkladně smazat data
Robin Kriebel 17. 05. 2016, 09:43:15
Odpovědět  Odkaz 
Pokud je potřeba kompletně přemazat celý disk tak to lze i utilitou dd, kdy se celý disk přemíše nulama, je vystaráno a stačí to spustit jenom jednou.

sudo dd if=/dev/zero of=/dev/sdX
Re: Jak v Linuxu důkladně smazat data
nobody 17. 05. 2016, 10:17:39
Odpovědět  Odkaz 
lze to tak udelat, ale neznamena to ze je to bezpecne... zalezi jestli to ma byt obrana pred Robinem Kriebelem, nebo i pred temi co maji moznosti obnovit takto jednoduse smazane data...
pak totiz prijdes na to, ze misto cist zero je vhodne cist urandom, misto jenom jednou je vhodne pusit alespon 3x, no a ve vysledku ze misto dd je vhodnejsi pustit shred ;)
Tomáš Crhonek Jak v Linuxu důkladně smazat data
Tomáš Crhonek 17. 05. 2016, 10:48:23
Odpovědět  Odkaz 
Jen malou poznámku. Článek se týká rotačních disků. Klasické systémy souborů na rotačním disku při mazání skutečně jen označí místo jako volné a data v blocích nechá být (a jsou tam, dokud se nepřepíší).

U SSD je to jiné. SSD potřebují mít bloky pro zápis smazané. Takže buď FS přímo informuje disk o tom, které bloky nepotřebuje (TRIM), nebo si to SSD řídí samo, každopádně v určité chvíli dojde ke smazání daného bloku. Navíc u ssd nemá smysl soubor přepisovat na místě, protože to ssd stejně neumí a data bloku přesune jinam (přičemž původní blok data stále obsahuje, dokud na něj nedojde řada při skutečném mazání)).

Takže, SSD na jednu stranu garantuje skutečné smazání dat, ale současně nikdy nemáte jistotu, kdy k tomu dojde (to, že se pošle scsi unmap a ssd vrací daný blok plný nul ještě neznamená, že na tom čipu už ta data nejsou, to si ssd promaže podle potřeby).
Lukáš Jelínek Re: Jak v Linuxu důkladně smazat data
Lukáš Jelínek 17. 05. 2016, 14:52:06
Odpovědět  Odkaz 
Díky za doplnění ;-)
Jak v Linuxu důkladně smazat data
Debian 20. 05. 2016, 19:33:02
Odpovědět  Odkaz 
Na obnovu doporucuji aplikaci "testdisk" ;-)
Re: Jak v Linuxu důkladně smazat data
nobody 22. 05. 2016, 11:18:00
Odpovědět  Odkaz 
Testdisk/Photorec je jiste vyborny nastroj pokud nedopatrenim smazes data, oddily, dojde k havarii filesystemu atd, nicmnene asi ti unikl vyznam clanku, ten je o tom jak DUKLADNE smazat data, tedy presne tak aby po tom dukladnem smazani se programy typu testdisk (resp. mnohem vyssi lowlevel liga) nemeli ceho chytit a tedy neslo obnovit NIC ;)

Odpovědět

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz

Lukáš Jelínek

Lukáš Jelínek

Dlouholetý člen autorského týmu LinuxEXPRESu a OpenOffice.cz. Vystudoval FEL ČVUT v oboru Výpočetní technika. Žije v Kutné Hoře, podniká v oblasti IT a zároveň pracuje v týmu projektu Turris. Ve volném čase rád fotografuje, natáčí a stříhá video, občas se věnuje powerkitingu a na prahu čtyřicítky začal hrát tenis.


  • Distribuce: Debian, Kubuntu, Linux Mint
  • Grafické prostředí: KDE

| proč linux | blog