shred to narzędzie z pakietu GNU coreutils, które kilkukrotnie nadpisuje zawartość pliku losowymi danymi, żeby po jego skasowaniu odzyskanie oryginalnej treści było możliwie trudne. Zwykłe rm tylko odpina plik z katalogu, a dane wciąż leżą na dysku, dopóki system ich nie nadpisze. shred robi tę robotę od razu i świadomie: nadpisuje sektory, a opcjonalnie też usuwa plik. Używasz go, gdy chcesz pozbyć się poufnego pliku (klucze, dumpy, hasła) tak, żeby nie dało się go łatwo wyciągnąć narzędziami do odzysku danych.
Składnia i najważniejsze opcje
Podstawowa forma to shred [OPCJE] PLIK.... Bez żadnych flag shred nadpisuje plik trzy razy, ale go nie usuwa — zostaje z zaszyfrowaną papką zamiast treści.
-u— usuwa (deallocate + unlink) plik po nadpisaniu; dopiero z tą flagą plik faktycznie znika.-n N,--iterations=N— nadpisuje N razy zamiast domyślnych 3. Więcej niż kilka to zwykle marnowanie czasu.-z,--zero— dorzuca na końcu jeden przebieg zerami, żeby zamaskować, że coś tu w ogóle było shredowane.-v,--verbose— pokazuje postęp każdego przebiegu; przydatne przy dużych plikach, żeby wiedzieć, że proces nie wisi.-f,--force— zmienia uprawnienia, jeśli trzeba, by móc zapisać do pliku tylko do odczytu.-s N,--size=N— nadpisuje tylko pierwsze N bajtów (akceptuje sufiksy K, M, G).--remove=HOW— steruje sposobem kasowania nazwy:unlink,wipelubwipesync(domyślne przy-u).
Przykłady użycia
shred -u tajne.txt— nadpisuje plik trzy razy i usuwa go z systemu.shred -vzn 5 klucz.pem— pięć przebiegów, z podglądem postępu i finałowym przebiegiem zerami; potem plik zostaje (bez-u).shred -uvz -n 1 dump.sql— jeden szybki przebieg, zera na koniec, usunięcie i gadatliwy log; kompromis szybkość/dyskrecja.shred -v /dev/sdb— nadpisuje cały dysk (nie tylko plik) — działa na urządzeniach blokowych, bo omija warstwę systemu plików.shred -s 1M -u log.bin— nadpisuje tylko pierwszy megabajt i kasuje plik, gdy zależy Ci na czasie, a początek pliku jest wrażliwy.
Częste błędy i pułapki
Największa pułapka: shred zakłada, że system plików nadpisuje dane w tym samym miejscu. Na systemach z journalingiem, kopiowaniem przy zapisie lub kompresją — ext3/ext4 w trybie data=journal, btrfs, ZFS, JFFS, RAID — dane mogą wylądować w innym bloku i shred nadpisze nie to co trzeba. To samo dotyczy dysków SSD, gdzie wear-leveling rozrzuca zapisy po całej kości. Ostrzega o tym sam man: na takich nośnikach skuteczność bywa iluzoryczna.
Druga pułapka: sam shred PLIK bez -u zostawia plik na dysku — nadpisany, ale wciąż widoczny w ls. Ludzie potem dziwią się, że plik „nie zniknął”. I trzecia: kopie zapasowe, snapshoty czy cache aplikacji shredowania nie obejmuje — jeśli plik był gdzieś zbackupowany, dalej istnieje.
Powiązane komendy: rm, wipe, dd, scrub, blkdiscard, srm.