Następna strona Poprzednia strona Spis treści

2. Jak nie skasować plików

Trzeba pamiętać, że Linux różni się od MS-DOS jeśli chodzi o kasowanie plików. W MS-DOS (jak i w Windows 95), dosyć łatwo jest odzyskać skasowane pliki - `system operacyjny' (używam tego terminu dosyć swobodnie) dostarcza nawet narzędzi, które automatyzują ten proces. W Linux-ie jest inaczej.

Reguła numer jeden (podstawowa wskazówka) brzmi:

RÓB KOPIE ZAPASOWE

bez względu na wszystko. Pomyśl o wszystkich swoich danych. Być może, jak ja, trzymasz kilkuletni zbiór listów, kontaktów, programów, dokumentów na swoim komputerze. Pomyśl co by się stało z Twoim życiem, gdyby Twój dysk uległ katastrofalnemu uszkodzeniu, lub gdyby -- o wielkie nieba ! -- złośliwy craker wyczyścił Twój dysk. To nie jest niemożliwe; korespondowałem z wieloma ludźmi w takiej sytuacji. Myślę, że teraz wszyscy rozsądnie myślący użytkownicy Linux-a wyjdą, kupią urządzenie do robienia kopii zapasowych, opracują kalendarz archiwizacji i będą się jego trzymać. Ja używam wolnego dysku twardego w innym komputerze i okresowo kopiuję tam przez sieć ethernet mój katalog domowy. Więcej informacji o planowaniu kalendarza archiwizacji znajdziesz u Frischa (1995) (patrz rozdział Bibliografia i Wyrazy Uznania).

Co wtedy, gdy nie ma kopii zapasowej? (lub nawet przy istnieniu kopii zapasowej: żadne środki bezpieczeństwa nie są złym rozwiązaniem w miejscu gdzie przechowywane są ważne dane).

Spróbuj ustawić prawa dostępu do ważnych plików na 440 (lub mniej): odebranie sobie samemu praw zapisu oznacza, że rm będzie wymagał potwierdzenia przed skasowaniem. (Zauważyłem, że jeśli rekursywnie kasuję katalog rm -r, prośba potwierdzenia pojawi się przy pierwszym i drugim pliku, potem program zachowuje się jak rm -rf).

Niezłą sztuczką dla wybranych plików jest utworzenie w ukrytym katalogu twardych dowiązań do nich. Kiedyś usłyszałem historię o administatorze, który przez pomyłkę skasował /etc/passwd (nieomal w ten sposób niszcząc system). Jednym z rozwiązań takiego kłopotu jest zrobienie czegoś następującego (jako root):

# mkdir /.backup
# ln /etc/passwd /.backup

Teraz skasowanie pliku wymaga większego wysiłku: gdy napiszesz tylko

# rm /etc/passwd

wtedy

# ln /.backup/passwd /etc

odtworzy Twój plik. Oczywiście, to rozwiązanie nie pomoże jeśli nadpiszesz plik, więc nie zapomninaj o kopii zapasowej.

W systemie plików ext2 jest możliwe użycie atrybutów ext2, aby ochraniać pliki. Atrybuty te mogą być zmieniane za pomocą komendy chattr. Istnieje atrybut `append-only`: plik z tym atrybutem może być tylko powiększany, nie może być skasowany i istniejąca zawartość nie może być nadpisana. Jeśli atrybut ten ma katalog, każdy plik czy katalog w nim leżący może być normalnie modyfikowany, ale żaden z plików nie może zostać skasowany. Atrybut `append-only' ustawia się poleceniem

$ chattr +a FILE...

Istnieje również atrybut `immutable', który może być zapalany lub gaszony tylko przez administratora. Pliku lub katalogu z tym atrybutem nie można zmienienić, skasować, zmienić jego nazwy, czy utworzyć do niego twardego dowiązania. Można go ustawić w następujący sposób:

# chattr +i FILE...

Ext2fs dostarcza również atrybutu `undeletable' (+u in chattr). Założenie było takie, że plik z tym atrybutem po skasowaniu zostaje przeniesiony w bezpieczne miejsce `safe location', aby rzeczywiste skasowanie przesunąć w czasie. Niestety funkcja ta nie jest jeszcze zaimplementowana w jądrze. Myślałem, że będzie większe zainteresowanie nią i stanie się to szybko, ale nie jest ona dostępna (według mojej wiedzy) w żadnej aktualnej wersji jądra.

Niektórzy radzą, aby zrobić alias lub funkcję w powłoce rm, która wykonywałaby rm -i (będziesz musiał potwierdzić skasowanie każdego pliku). Dystrubucja Red Hat robi to domyślnie dla wszystkich użytkowników, w tym i dla root-a. Ja osobiście nie lubię oprogramowania, które nie może działać bez mojej pomocy, dlatego nie używam tego sposobu. Wcześniej, czy później może pojawić się kolejny problem: kiedy będziesz pracował w trybie singe-user, lub będziesz używał innej powłoki lub nawet innej maszyny, gdzie Twoja funkcja rm nie istnieje. Jeśli będziesz spodziewał się, że każde skasowanie wymaga potwierdzenia, dosyć łatwo jest nie przewidzieć tego, że kazałeś skasować zbyt wiele plików. Również skrypty i programy, które podmieniają rm mogą być bardzo niebezpieczne.

Trochę lepszym rozwiązaniem jest użycie pakietu, który umożliwia `odtwarzalne' kasowanie poprzez specjalną komendę zastępująca rm. Szczegóły znajdziesz u Peeka (1993) (patrz rozdział Bibliografia i Wyrazy Uznania). Jednak w ten sposób przyzwyczajamy użytkownika do pewniej nonszalancji przy kasowaniu plików. Nie jest to najlepsze, bowiem system typu Unix wymaga jednak uważnego działania.


Następna strona Poprzednia strona Spis treści