Hur man säkert tar bort filer på Linux

Strimla gamla datafiler av samma anledning som du strimlar gamla pappersdokument. Vi berättar vad du behöver veta om att säkert ta bort Linux-filer. Den här handledningen täcker shred-kommandot och säker-delete-paketet med verktyg.

Borttagna filer kan normalt återställas

Att ta bort en fil tar faktiskt inte bort den från din hårddisk. Allt beror på hur ditt filsystem använder inoder. Dessa är datastrukturerna inom filsystemet som innehåller metadata om filerna. Namnet på filen, dess position på hårddisken, vilka attribut och behörigheter den har och så vidare lagras i en inod. En katalog är inte mer än en fil i sig. En som innehåller namn och inodnummer för filerna som katalogen innehåller.

När du tar bort en fil med rm frigör filsystemet lämplig inod och justerar katalogfilen. Detta markerar utrymmet på hårddisken som filen brukade uppta som oanvänt. Föreställ dig att du går in i ett bibliotek och går igenom kartoteket, hittar en boks katalogkort och river upp det. Boken finns kvar i hyllan. Det är bara svårare att hitta.

Med andra ord, utrymmet som användes av filen är nu fritt att användas av andra filer. Men innehållet i den gamla filen sitter fortfarande i det utrymmet. Tills det utrymmet har skrivits över finns det en god chans att filen kan hämtas.

Men att helt bli av med en fil är inte så enkelt som att bara skriva över dem. Som vi ska se.

Gör inte det här med SSD-enheter

Dessa tekniker är för traditionella elektromekaniska hårddiskar (HDD) och bör inte användas med solid state-enheter (SSD). Det kommer inte att fungera och kommer att orsaka extra skrivningar och onödigt slitage på din SSD. För att säkert radera data från en SSD bör du använda verktyget som tillhandahålls av tillverkaren av din SSD.

Strimla kommandot

shred är utformad för att utföra överskrivningen åt dig så en raderad fil kan inte återställas. Det ingår i alla Linux-distributioner som testades under forskningen för den här artikeln, inklusive Ubuntu, Fedora och Manjaro.

I det här exemplet kommer vi att arbeta i en katalog som heter ~/research, som innehåller många textfiler. Den innehåller även några andra kataloger som i sin tur innehåller andra filer. Vi kommer att anta att dessa filer är känsliga och måste raderas helt från hårddisken.

Vi kan se katalogträdstrukturen genom att använda trädkommandot enligt följande. Alternativet -d (katalog) gör att trädet endast listar kataloger och inte listar alla filer. Katalogträdstrukturen ser ut så här:

tree -d

Strimla en enskild fil

För att strimla en enda fil kan vi använda följande kommando. Alternativen vi använder är:

u: Avallokera och ta bort filen efter överskrivning.
v: Utförligt alternativ, så att shred berättar vad den gör.
z: Utför en sista överskrivning med nollor.

shred -uvz Preliminary_Notes.txt_01.txt

shred skriver över filen fyra gånger som standard. De tre första passen använder slumpmässiga data, och det sista passet använder nollor, som vi begärde. Den tar sedan bort filen och skriver över en del av metadata i inoden

Ställa in antalet överskrivningspass

Vi kan be shred att använda fler eller färre överskrivningspass genom att använda alternativet -n (nummer). shred kommer alltid att använda minst ett pass. Siffran vi tillhandahåller här är antalet extra pass som vi behöver shred för att utföra. Så shred kommer alltid att göra ett pass mer än det antal vi ber om. För att få tre pass totalt begär vi två extra pass:

shred -uvz -n 2 Preliminary_Notes.txt_02.txt

Som väntat gör shred tre pass.

Färre pass – färre fragmentering om du vill – är uppenbarligen snabbare. Men är det mindre säkert? Tre passningar är intressant nog mer än tillräckligt.

Strimla flera filer

Jokertecken kan användas med shred för att välja grupper av filer som ska raderas. * representerar flera tecken, och ? representerar ett enda tecken. Detta kommando skulle radera alla återstående ”Preliminary_Notes”-filer i den aktuella arbetskatalogen.

shred -uvz -n 2 Preliminary_Notes_*.*

De återstående filerna bearbetas var och en av shred i tur och ordning.

shred har inget rekursivt alternativ, så det kan inte användas för att radera katalogträd för kapslade kataloger.

Problemet med att säkert ta bort filer

Så bra som shred är, det finns ett problem. Moderna journalsystem som ext3 och ext4 gör enorma ansträngningar för att säkerställa att de inte går sönder, blir korrupta eller förlorar data. Och med journalföring av filsystem finns det ingen garanti för att överskrivningen faktiskt sker över hårddiskutrymmet som används av den raderade filen.

Om allt du är ute efter lite sinnesfrid att filerna har raderats lite mer noggrant än rm skulle ha gjort det, så är shred förmodligen bra. Men gör inte misstaget att tro att data definitivt är borta och är helt oåterkallelig. Det är nog inte fallet.

Sviten för säker radering

Secure-delete-kommandona försöker övervinna de bästa ansträngningarna för att journalföra filsystem och att lyckas skriva över filen på ett säkert sätt. Men exakt samma varningar gäller. Det finns fortfarande ingen garanti för att överskrivningen faktiskt äger rum över den region på hårddisken som du behöver den för att radera filen av intresse. Det finns mer chans, men ingen garanti.

Secure-delete-kommandona använder följande sekvens av överskrivningar och åtgärder:

1 skriv över med 0xFF-värdebytes.
5 skriver över med slumpmässiga data.
27 skriver över med speciella värden definierade av Peter Gutmann.
5 fler överskrivningar med slumpmässiga data.
Byt namn på filen till ett slumpmässigt värde.
Trunkera filen.

Om allt detta verkar överdrivet för dig, är du i gott sällskap. Det verkar också överdrivet för Peter Gutmann, professor vid University of Aukland. Han publicerade en tidning 1996 diskutera dessa tekniker, ur vilken uppstod den urbana myten att du måste använda alla tekniker som diskuteras i den artikeln på en gång.

Peter Gutmann har sedan dess försökt få tillbaka anden i flaskan med att säga ”En bra skrubbning med slumpmässiga data kommer att göra ungefär lika bra som man kan förvänta sig.”

Men vi är där vi är, och det här är den mängd tekniker som används av säker-radera-kommandona. Men först måste vi installera dem.

Installerar säker-delete

Använd apt-get för att installera det här paketet på ditt system om du använder Ubuntu eller en annan Debian-baserad distribution. På andra Linux-distributioner, använd din Linux-distributions pakethanteringsverktyg istället.

sudo apt-get install secure-delete

Det finns fyra kommandon som ingår i paketet för säker radering.

srm är en säker rm som används för att radera filer genom att radera dem och skriva över deras hårddiskutrymme.
sfill är ett verktyg för att skriva över allt ledigt utrymme på din hårddisk.
sswap används för att skriva över och rensa ditt bytesutrymme.
sdmem används för att rensa ditt RAM-minne.

srm-kommandot

Du använder kommandot srm ungefär som du skulle använda kommandot rm. För att ta bort en enskild fil, använd följande kommando. Alternativet -z (nollor) gör att smr använder nollor för den sista raderingen istället för slumpmässiga data. Alternativet -v (verbose) gör att srm informerar oss om dess framsteg.

srm -vz Chapter_One_01.txt

Det första du kommer att märka är att srm är långsam. Det ger viss visuell feedback när det fungerar, men det är en lättnad när du ser kommandotolken igen.

Du kan använda alternativet -l (minska säkerheten) för att minska antalet pass till två, vilket snabbar upp saker och ting dramatiskt.

srm -lvz Chapter_One_02.txt

srm informerar oss om att detta – enligt dess åsikt – är mindre säkert, men det tar fortfarande bort och skriver över filen åt oss.

Du kan använda alternativet -l (minska säkerheten) två gånger för att minska antalet passeringar till ett.

srm -llvz Chapter_One_03.txt

Använda srm med flera filer

Vi kan också använda jokertecken med srm. Detta kommando kommer att radera och torka de återstående delarna av kapitel ett:

srm -vc Chapter_One_0?.txt

Filerna bearbetas av srm i tur och ordning.

Ta bort kataloger och deras innehåll med srm

Alternativet -r (rekursivt) kommer att få srm att ta bort alla underkataloger och deras innehåll. Du kan skicka sökvägen till den första katalogen till srm.

I det här exemplet tar vi bort allt den aktuella katalogen, ~/research. Detta innebär att alla filer i ~/research och alla underkataloger tas bort på ett säkert sätt.

srm -vz *

srm börjar bearbeta katalogerna och filerna.

Det returnerar dig så småningom till kommandotolken. På testmaskinen som den här artikeln undersöktes på tog det cirka en timme att ta bort cirka 200 filer fördelade mellan den aktuella katalogen och tre kapslade kataloger.

Alla filer och underkataloger togs bort som förväntat.

Kommandot sfill

Vad händer om du är orolig för en fil som du har raderat med rm, hur kan du gå över den gamla marken och se till att den skrivs över? Kommandot sfill kommer att skriva över allt ledigt utrymme på din hårddisk.

När den gör detta kommer du att märka att du har mindre och mindre ledigt utrymme på din hårddisk, ända till den punkt där det inte finns något ledigt utrymme alls. När fyllningen är klar frigörs allt ledigt utrymme tillbaka till dig. Om du administrerar ett fleranvändarsystem skulle detta vara mycket störande, så detta är en underhållsuppgift som bör utföras utanför öppettiderna.

Även på en enskild användares dator betyder förlusten av hårddiskutrymme att den är oanvändbar när sfill har tagit det mesta av utrymmet. Detta är något som du skulle börja och sedan gå ifrån.

För att försöka snabba upp saker och ting lite kan du använda alternativet -l (minska säkerheten). De andra alternativen är alternativen -v (verbose) och -z (nollor) som vi har sett tidigare. Här ber vi sfill att säkert skriva över allt ledigt utrymme i /home-katalogen.

sudo sfill -lvz /home

Gör dig bekväm. På testdatorn – som bara har en 10 GB hårddisk – startade detta mitt på eftermiddagen och det slutfördes någon gång över natten.

Det kommer att rinna iväg i timmar. Och det här är med alternativet -l (minska säkerheten). Men så småningom kommer du att återgå till kommandotolken.

Kommandot sswap

Kommandot sswap skriver över lagringen i din swap-partition. Det första vi behöver göra är att identifiera din swap-partition. Vi kan göra detta med kommandot blkid, som listar blockenheter.

sudo blkid

Du måste hitta ordet ”swap” och göra en anteckning om blockenheten den är ansluten till.

Vi kan se att swap-partitionen är ansluten till /dev/sda5.

Vi måste stänga av diskskrivningar till swap-partitionen så länge överskrivningen pågår. Vi kommer att använda kommandot swapoff:

sudo swapoff /dev/sda5

Vi kan nu använda kommandot sswap.

Vi kommer att använda /dev/sda5 som en del av kommandoraden för kommandot sswap. Vi kommer också att använda alternativen -v (verbose) och -ll (minska säkerheten), som vi använde tidigare.

sudo sswap -llv /dev/sda5

sswap börjar arbeta sig igenom din swap-partition och skriver över allt som finns i den. Det tar inte så lång tid som sfill. Det känns bara så.

När den har slutförts måste vi återställa swap-partitionen som ett aktivt swap-utrymme. Vi gör detta med swapon-kommandot:

sudo swapon /dev/sda5

Kommandot sdmem

Secure-delete-paketet innehåller till och med ett verktyg för att torka RAM-chips (Random Access Memory) i din dator.

A kallstövelangrepp kräver fysisk åtkomst till din dator mycket kort efter att den stängts av. Denna typ av attack kan potentiellt tillåta hämtning av data från dina RAM-chips.

Om du tror att du behöver skydda dig mot den här typen av attacker – och det skulle vara svårt för de flesta att tro att de behövde det – kan du torka av ditt RAM-minne innan du stänger av datorn. Vi kommer att använda alternativen -v (verbose) och -ll (minska säkerheten) en gång till.

sudo sdmem -vll

Terminalfönstret kommer att fyllas med asterisker som en indikation på att sdmem arbetar sig igenom ditt RAM-minne.

Det enkla alternativet: Kryptera bara din enhet

Istället för att säkert radera filer, varför inte säkra din hårddisk eller din hemmapp med kryptering?

Om du gör det kan ingen komma åt någonting, vare sig det är en livefil eller en raderad fil. Och du behöver inte vara på din vakt och komma ihåg att säkert radera känsliga filer eftersom alla dina filer redan är skyddade.

De flesta Linux-distributioner frågar om du vill använda kryptering vid installationen. Att säga ”ja” kommer att spara mycket framtida försämring. Du får inte hantera hemlig eller känslig information. Men om du tror att du kan ge eller sälja datorn till någon annan när du är klar med den, kommer kryptering att förenkla det också.