przystajnik

Terminal pogryzł człowieka: shred

Być może niektórych to zaskoczy, ale usuwając plik z dysku lub go formatując (dysk), wcale nie pozbywamy się jego zawartości. W bardziej lub prostszy sposób dane to mogą zostać odzyskane, a ponieważ żyjemy w niepewnych czasach, niekiedy warto zadbać o swoją godność. Tym bardziej, że większość a wręcz wszystkie dystrybucje Linuksa dostarczają nam domyślnie wdzięcznego narzędzia o nazwie shred. Z nim usuwanie plików może stać się nieco bardziej skuteczne.

W większości czy nawet we wszystkich dystrybucjach polecenie shred znajduje się w pakiecie coreutils. Jest on domyślnie instalowany, więc jedyne co nam pozostaje, to zapoznać się z zasadami działania polecenia. A shred można wykorzystać zarówno do skutecznego usuwania pliku z dysku, jak też całej zawartości partycji. O co chodzi w tym panicznym zacieraniu śladów?

Na początku musimy pogodzić się z rzeczywistością – usunięcie pliku (polecenie rm) tak naprawdę kasuje tylko wskaźnik pozwalający określić położenie pliku na dysku – sama zawartość pliku pozostaje nienaruszona i zwykle po paru minutach zostaje nadpisana innymi danymi, lecz nigdy nie możemy być tego pewni. Mało tego – nawet tak nadpisana zawartość, po zabrania dysku przez smutnych panów do profesjonalnego laboratorium, może zostać odtworzona przez drogi urządzenia rejestrujące ślady danych ‚pod’ obecnymi danymi. Dlatego shred do tematu usuwania zawartości podchodzi nieco inaczej.

$ shred -uvz -n 25 nasze_dane.txt

Powyższe polecenie faktycznie usunie pliku (-u) dopiero po nadpisaniu jego zawartości zerami (-z) – w celu ukrycia procesu niszczenia danych. I to zamazywanie zostanie powtórzone 25 razy (-n 25). Dzięki parametrowi -v będziemy na bieżąco mogli podejrzeć postęp tych działań.

Podobnie możemy postąpić z partycją pełną dobra wszelakiego:

$ shred -fuvz -n 100 /dev/sda2

Zasada podobna, dołożyliśmy -f do wymuszenia zmian praw dostępu. Wymazywanie partycji najlepiej przeprowadzać jako root.

To oczywiście może być zaledwie czubek paranoi skutecznego zacierania śladów z dysku. W trybie usuwania pojedynczych plików shred nie jest doskonały – nie gwarantuje skuteczności gdy dane znajdują się na systemie plików z kroniką, lub w zestawach RAID, jak również nie sprawdzi się przy zaszyfrowanych partycjach. Oczywiście, poza przypadkami, gdy niszczymy całe partycje.

UWAGA: Należy pamiętać, że shred opiera się na ważnym założeniu: że system
plików zamazuje dane w tym samym miejscu, gdzie je pierwotnie zapisał. Tak
dzieje się tradycyjnie, ale wiele nowoczesnych systemów plików tak nie robi.
Z następującymi systemami plików shred nie działa efektywnie albo nie ma
gwarancji, że działa efektywnie we wszystkich trybach pracy systemu plików:

* opartymi na logowaniu i journalingu, jak dostarczane z AIXem i Solarisem
(oraz JFS, ReiserFS, XFS, Ext3 itd.)

* takimi, które zapisują dane na dodatkowych dyskach i kontynuują pracę,
nawet jeżeli nie udają się niektóre operacje zapisu, jak systemy plików
oparte na RAID

* które zapisują stan chwilowy, jak serwer NFS Network Appliance

* używającymi tymczasowego cache’a, jak klient wersji 3 NFS

* kompresowanymi

W przypadku systemu plików ext3 powyższe uwagi mają znaczenie (a shred ma
wtedy ograniczona efektywność) tylko w trybie data=journal, w którym
journallingowi podlega oprócz metadanych również zawartość pliku. Zarówno w
trybie data=ordered (domyślny) jak data=writeback shred działa jak zazwyczaj.
Tryb jourinallingu ext3 może byc zmieniony przez dodanie opcji data=opcja do
opcji mount-a dla danego systemu plików w pliku /etc/fstab, jak podaje manual
(man mount)

Dodatkowo backupy i zdalne kopie mogą zawierać egzemplarze tego samego pliku,
które nie mogą zostać usunięte i plik zamazany schredem może zostać
odtworzony.

Post navigation

7 comments for “Terminal pogryzł człowieka: shred

  1. Wojciech
    17 Kwiecień, 2014 at 9:21

    Wielkie dzięki za przypomnienie o tym przydatnym programiku i skróconą instrukcję. Właśnie rozważałem sposób na usunięcie resztkowych danych z uszkodzonego, starego laptopa, który chcę oddać na części albo do utylizacji, a nie chciałem usuwać tych pozostałości po danych młotkiem. Cykl „Terminal pogryzł człowieka” staje się moim ulubionym! Jeszcze raz dziękuję!

    Przy okazji: z okazji Świąt Wielkanocnych życzę Autorowi i czytelnikom dużo zdrowia, wszelkiej pomyślności i Błogosławieństwa Bożego!

  2. Uppsss
    17 Kwiecień, 2014 at 13:48

    nautilus-actions-config-tool
    Label – shred , Tooltip – Bezpieczne usuwanie plików , Path – shred , Parameters – -f -u -v -z %M,

    … nie prościej i wygodniej?

  3. Zen_Xen_ni
    17 Kwiecień, 2014 at 14:45

    Nie każdy używa nautilusa, zwłaszcza że teraz fundacja GNOME odstawia brzydkie rzeczy.

  4. 17 Kwiecień, 2014 at 15:35

    Z pewnością może i wygodniej, ale w cyklu ‚Terminal pogryzł człowieka’ chodzi właśnie o ukazanie i uproszczenie ludzkiej twarzy terminala i poleceń tekstowych. Bo narzędzia graficzne każdy potrafi już używać 🙂

  5. Uppsss
    18 Kwiecień, 2014 at 8:52

    Ok, zrozumiałem przesłanie artykułu, dobrze że mnie nie zagryźliście :)).
    Poproszę w takim razie następny pt. Jak w terminalu usunąć : kopie zapasowe (nazwa zakończona tyldą) + puste katalogi. Oczywiście prosty skrypt byłby mile widziany.

    Wielkie dzięki.

  6. ~
    1 Maj, 2014 at 22:38

    Brakuje jeszcze ostrzeżenia żeby nie używać shred’a na dyskach SSD – tam shred nigdy nie zadziała jak od niego się oczekuje, a dodatkowo „zużyje” dużą ilość zapisów. (Dyski SSD mają w elektronice układ równoważący zużycie fizycznych bloków, więc 100 zapisów pod ten sam adres trafi z pewnością w różne miejsca dysku.)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Translate »