Zajrzyj do LDP BootPrompt-HOWTO
w celu uzyskania szczegółowych informacji na temat boot prompt.
Możliwe jest uruchomienie systemu i zalogowanie się na konto administratora
(root) bez znajomości hasła, jeżeli tylko posiadamy dostęp do lokalnej konsoli
(zakładając, że nie zostało założone hasło na BIOS lub program ładujący system
taki jak lilo
).
Poniżej przedstawiono procedurę postępowania w takim przypadku, która nie wymaga posiadania dodatkowych narzędzi, jak choćby dyskietek czy płyt z systemem, ani modyfikacji ustawień BIOSu. Zakładamy, że „Linux” to etykieta podstawowego jądra systemu w domyślnej instalacji Debiana.
Gdy tylko pojawi się ekran startowy lilo
oraz napis
boot: (być może musisz przytrzymać klawisz shift podczas
uruchamiania lilo
aby zapobiec automatycznemu startowi systemu)
wpisz:
boot: Linux init=/bin/sh
To wymusza załadowanie jądra oraz uruchomienie /bin/sh
w miejsce
standardowego programu init
. Dzięki temu uzyskujesz przywileje
administratora oraz dostęp do konta root. Ponieważ system plików
/
jest zamontowany w trybie „tylko do
odczytu”, a inne nie są zamontowane w ogóle, trzeba wykonać kilka
operacji, aby uzyskać w pełni funkcjonujący system.
init-2.03# mount -n -o remount,rw / init-2.03# mount -avt nonfs,noproc,nosmbfs init-2.03# cd /etc init-2.03# vi passwd init-2.03# vi shadow
(Jeżeli drugie pole danych zapisanych w /etc/passwd
zawiera tylko
literkę „x” dla każdego użytkownika, oznacza to, że Twój
system używa osobnego pliku do przechowywania haseł i musisz edytować
/etc/shadow
.) Aby wyłączyć hasło dla konta root, wykasuj całą
zawartość pola odpowiedzialnego za hasło (jest to drugie pole w pliku
/etc/passwd
lub /etc/shadow
, jeżeli system go używa).
Teraz możesz przeładować system i zalogować się na konto root bez hasła.
Podczas inicjowania na poziomie startu równym 1 („runlevel
1”), Debian (od wersji Potato) wymaga hasła, czego niektóre starsze
dystrybucje nie czynią.
Dobrym pomysłem jest mieć jakiś prosty edytor w /bin/
na wypadek,
gdyby /usr/
było niedostępne (zobacz także Edytory awaryjne, Rozdział 11.2).
Możesz także rozważyć instalację pakietu sash
. Jeśli system
przestanie się uruchamiać, wykonaj:
boot: Linux init=/bin/sash
sash
jest interaktywnym zamiennikiem dla sh
, nawet
gdy /bin/sh
jest niezdatny do użytku. sash
jest
łączony statycznie i zawiera wbudowane wiele typowych funkcji (wpisz
„help” w linii poleceń, aby poznać jego możliwości).
Uruchom system z zestawu dyskietek ratunkowych lub z płyty CD. Załóżmy, że
/dev/hda3
to oryginalna, główna partycja (root).
Poniższe polecenia pozwolą na równie łatwe, jak w poprzednim punkcie,
wyedytowanie plików z użytkownikami i hasłami.
# mkdir fixit # mount /dev/hda3 fixit # cd fixit/etc # vi shadow # vi passwd
Przewagą tej metody nad poprzednią jest to, że nie trzeba znać hasła do
lilo
(jeżeli jest takowe uaktywnione). Aczkolwiek wymaga to
ingerencji w ustawienia BIOSu i włączenie możliwości startu systemu z CD czy
też dyskietek.
To żaden problem, nawet jeśli zaniedbano przygotowawania dystkietki startowej.
Jeśli lilo
jest uszkodzone, użyj płyty startowej z zestawu płyt
instalacyjnych Debiana (lub utwórz dyskietkę startową z obrazów zawartych na
tejże płycie) i uruchom system przy jej pomocy.
Zakładamy, że główna partycja Twojej instalacji Linuksa to
/dev/hda12
oraz że chcesz ustawić 3 poziom startu.
Gdy pojawi się komunikat startowy, wpisz:
boot: rescue root=/dev/hda12 3
Po chwili otrzymujesz prawie w pełni funkcjonalny system wykorzystujący jądro z płytki/dyskietki startowej. Mogą jednak wystąpić pewne problemy wynikające z braku pewnych możliwości lub modułów w dystrybucyjnym jądrze.
Jeśli masz uszkodzony system zainteresuj się też rozdziałem Instalowanie pakietu w niestartującym systemie, Rozdział 6.3.6.
Jeżeli potrzebujesz specjalnie dostosowanej dyskietki startowej, przejrzyj plik
readme.txt
umieszczony na dysku ratunkowym.
Ujarzmianie wersji unstable/sid może być zabawne, ale zawierający
błędy xdm
, gdm
, kdm
oraz
wdm
starujący przy uruchamianiu systemu może Ci dopiec.
Na początek zdobądź dostęp do konta administratora (root) wpisując poniższe
polecenie podczas startu lilo
:
boot: Linux vga=normal s
Zakładamy, że Linux to etykieta jądra, które zazwyczaj uruchamiasz.
Natomiast „vga=normal” sprawi, że lilo
wystartuje w normalnym trybie VGA. Ostatni parametr --
„s” (lub „S”) sprawia, że
init
uruchamia system w trybie pojedynczego użytkownika. Teraz
wystarczy wpisać hasło administratora (konto root).
Istnieje kilka sposobów na wyłączenie wszystkich demonów systemu X:
/etc/init.d/?dm
.
/etc/rc2.d/S99?dm
na
/etc/rc2.d/K99?dm
.
/etc/rc2.d/S99?dm
.
W przykładach rc2.d
oznacza aktualny poziom startu
(runlevel) ustalony w /etc/inittab
, zaś
?dm
oznacza, że powinieneś uruchomić każdy z programów:
xdm
, gdm
, kdm
czy też wdm
.
Tylko pierwsze z rozwiązań wymienionych na liście, jest „jedynie
słuszną drogą” w systemie Debian. Ostatni ze sposobów jest łatwy,
ale wymaga ponownego ustawienia menedżera ekranu używając później
dpkg-reconfigure
. Pozostałe to różne metody na wyłączenie
demonów.
Po tych czynnościach nadal możesz uruchomić środowisko graficzne poleceniem
startx
wydanym na dowolnej konsoli tekstowej.
System może być uruchamiany w wybranym poziomie startu (runlevel) oraz z
określoną przez użytkownika konfiguracją. Wystarczy wykorzystać udostępnianą
przez lilo
możliwość podania parametrów przy uruchamianiu systemu.
Szczegóły znajdziesz w BootPrompt-HOWTO
(LDP).
Jeżeli chcesz uzyskać 4 poziom startu, spróbuj poniższego:
boot: Linux 4
Jeśli natomiast chcesz uzyskać tryb pojedynczego użytkownika (single-user), a znasz hasło administratora, możesz użyć:
boot: Linux S boot: Linux 1 boot: Linux -s
W przypadku, gdy chcesz uruchomić system tak, aby wykorzystywał mniej pamięci, niż jest w rzeczywistości w komputerze (powiedzmy 48MB, podczas gdy komputer ma 64MB), użyj:
boot: Linux mem=48M
Upewnij się, że nie podajesz wartości przewyższającej dostępną pamięć, gdyż
wtedy jądro może ulec katastrofie! Jeżeli posiadamy więcej niż 64MB
(przykładowo 128MB), do czasu aż podamy mem=128M podczas startu
lub w /etc/lilo.conf
, starsze jądra i/lub płyty główne ze starszym
BIOSem mogą nie używać pamięci powyżej 64MB.
GRUB
jest to nowy zarządca startu systemu wywodzący się z projektu
GNU Hurd. Jest on bardziej elastyczny niż lilo
, jednakże
występują tu drobne różnice w zakresie manipulowania parametrami startu
systemu.
grub> find /vmlinuz grub> root (hd0,0) grub> kernel /vmlinuz root=/dev/hda1 grub> initrd /initrd grub> boot
Musisz być świadom nazw urządzeń pochodzących z Hurda:
HURD/GRUB Linux MSDOS/Windows (fd0) /dev/fd0 A: (hd0,0) /dev/hda1 C: (zazwyczaj) (hd0,3) /dev/hda4 F: (zazwyczaj) (hd1,3) /dev/hdb4 ?
Zajrzyj do /usr/share/doc/grub/README.Debian
oraz
/usr/share/doc/grub-doc/html/
po dokładniejsze informacje.
Administracja systemem pociąga za sobą o wiele więcej drobiazgowych zadań w Uniksie niż w zwykłych środowiskach komputerów osobistych. Upewnij się, że znasz przynajmniej podstawowe sposoby konfiguracji, na wypadek gdyby zaszła potrzeba odratowania systemu z problemów. Bazujące na graficznym interfejsie narzędzia konfiguracyjne wyglądają przyjemnie i wygodnie, jednakże zazwyczaj nie nadają się do użycia w stanie zagrożenia.
Tak więc, rejestrowanie działań poleceniami powłoki jest dobrym zwyczajem, szczególnie podczas pracy jako administrator (root).
Emacs: Użyj M-x shell aby rozpocząć nagrywanie do bufora oraz C-x C-w aby zapisać bufor na dysk.
Powłoka: Użyj polecenia screen
oraz „^A H”
jak opisano w Zmiana konsoli przy pomocy
screen
a, Rozdział 8.6.27 lub skorzystaj z script
.
$ script nagranie Script started, file is nagranie $ ... ... Rób cokolwiek ... ... Na zakończenie naciśnij Ctrl+D ... Script done, file is nagranie $ col -bx <nagranie >raport $ vi raport
Poniższe polecenie może być użyte zamiast polecenia script
:
$ bash -i 2>&1 | tee nagranie
Jeżeli chcesz zarejestrować graficzny obraz aplikacji w środowisku X-Window,
możesz użyć programu gimp
(GUI). Potrafi on przechwytywać
określone okna z osobna lub cały ekran. Innym rozwiązaniem jest zastosowanie
programów takich jak: xwd
(z pakietu xbase-clients
),
import
(z pakietu imagemagick
) oraz
scrot
(z pakietu scrot
).
Jeżeli chcesz przearanżować strukturę położenia plików, skorzystaj na przykład z:
Typowa metoda: # cp -a /początkowy/katalog /docelowy/katalog # wymaga narzędzia GNU cp # (cd /początkowy/katalog && tar cf - . ) | \ (cd /docelowy/katalog && tar xvfp - ) Jeżeli twarde dowiązania są wymagane, przydatna okaże się metoda: # cd /ścieżka/do/starego/katalogu # find . -depth -print0 | afio -p -xv -0a /punkt/montowania/nowego/katalogu Jeśli cel jest na odległej maszynie: # (cd /początkowy/katalog && tar cf - . ) | \ ssh użytkownik@komputer.odległy (cd /docelowy/katalog && tar xvfp - ) Jeżeli nie ma dowiązań do plików, wystarczy: # scp -pr użytkownik1@jeden.komputer:/początkowy/katalog \ użytkownik2@drugi.komputer:/docelowy/katalog
W przykładach scp
<==> rcp
oraz
ssh
<==> rsh
.
Powyższe sposoby kopiowania całych katalogów zostały zaprezentowane przez
Manoja Srivastavę srivasta@debian.org
na liście
dyskusyjnej debian-user@lists.debian.org.
cp
Tradycyjne narzędzie cp
nie było dobrym kandydatem do takich
zadań, gdyż nie wyłuskiwało symbolicznych dowiązań ani nie chroniło dowiązań
twardych. Kolejną rzeczą wymagającą rozważenia były tzw. rzadkie (sparse)
pliki (pliki z dziurami).
GNU cp
przezwyciężyło te ograniczenia, jednakże na systemach
niezgodnych z GNU, cp
może wciąż sprawiać problemy. Możesz
również nie móc tworzyć małych, przenośnych archiwów używając cp
.
% cp -a . newdir
tar
Tar przezwycięża kilka z problemów, które cp
ma z symbolicznymi
dowiązaniami. Jednakże, jakkolwiek cpio
obsługuje specjalne
pliki, to konwencjonalny tar
nie.
W przypadku wielu dowiązań (hardlink) do jednego pliku, tar
umieszcza na taśmie tylko jedną kopię; cpio
umieszcza jedną kopię
dla każdego dowiązania.
Polecenie tar
zmieniło swoją opcję używaną dla plików
.bz2
pomiędzy Potato a Woody, więc używaj w skryptach
--bzip2 zamiast ich krótkiej formy -I (Potato) czy
też -j (Woody).
pax
Nowe, wypasione narzędzie POSIX (IEEE Std 1003.2-1992, strony 380–388
(rozdział 4.48) oraz strony 936–940 (rozdział E.4.48)) o nazwie Portable
ArchiveInterchange. pax
potrafi czytać, zapisywać i wyświetlać
zawartość pliku archiwum, jak również kopiować hierarchie katalogów. Operacje
narzędzi pax
są niezależne od określonego rodzaju archiwum i
obsługują szeroką gamę różnorodnych formatów.
Implementacje programu pax
są ciągle nowe i siermiężne.
# apt-get install pax $ pax -rw -p e . nowy_katalog lub $ find . -depth | pax -rw -p e nowy_katalog
cpio
cpio
kopiuje pliki do lub z archiwum programu cpio
albo programu tar
. Archiwum może być plikiem na dysku, taśmą
magnetyczną czy też potokiem.
$ find . -depth -print0 | cpio --null --sparse -pvd new-dir
afio
afio
jest lepszym wyborem w zakresie obsługi archiwów w formacie
cpio
. Jest zdecydowanie szybszy niż cpio
, udostępnia
więcej opcji obsługi taśmy magnetycznej oraz zachowuje się o wiele wdzięczniej
w przypadku uszkodzenia danych wejściowych. Obsługuje wieloczęściowe archiwa
podczas interaktywnych operacji. afio
może tworzyć kompresowane
archiwa, które są o wiele bezpieczniejsze niż kompresowane produkty
tar
a lub cpio
. afio
jest używane jako
„archiwizujący silnik” w skryptach do tworzenia kopii
zapasowych.
$ find . -depth -print0 | afio -px -0a new-dir
Kopie różnicowe oraz synchronizacja danych mogą być wykonane różnymi metodami:
rcs
: kopia oraz historia, tylko tekst
rdiff-backup
: kopia oraz historia. symboliczne dowiązania .
pdumpfs
: kopia oraz historia w granicach systemu plików. symlink
OK
rsync
: jednokierunkowa synchronizacja
unison
: dwukierunkowa synchronizacja
cvs
: wielotorowa synchronizacja z serwerem, kopia oraz historia,
tylko tekst, dojrzałe rozwiązanie. Zobacz też tutaj: Concurrent Versions System (CVS), Rozdział
12.1.
arch
: wielotorowa synchronizacja z serwerem, kopia oraz historia,
brak takich rzeczy jak „roboczy katalog”.
subversion
: wielotorowa synchronizacja z serwerem, kopia oraz
historia, Apache.
Połączenie jednej z tych metod z archiwizacją opisaną tutaj: Kopiowanie oraz archiwizacja całych katalogów, Rozdział
8.3 oraz automatycznym wykonywaniem zadań o określonym czasie (Harmonogram działań (cron
, at
),
Rozdział 8.6.26) pozwoli stworzyć miły system kopii bezpieczeństwa.
Poniżej opiszę trzy łatwe w użyciu narzędzia.
rdiff-backup
pozwala przyjemnie i prosto utworzyć kopię
bezpieczeństwa wraz z historią zmian, obsługując dowolne typy plików, włączając
w to dowiązania symboliczne. Aby zarchiwizować ~/
do
/mnt/kopia
, zastosuj:
$ rdiff-backup --include ~/tmp/keep --exclude ~/tmp ~/ /mnt/kopia
Aby przywrócić dane sprzed trzech dni do ~/stare
, użyj:
$ rdiff-backup -r 3D /mnt/kopia ~/stare
Poczytaj też podręcznik systemowy: rdiff-backup(1)
.
pdumpfs
pdumpfs
to prosty system tworzenia codziennych kopii zapasowych,
zbliony do dumpfs
. Możesz korzystać z dostępu do wcześniejszych
kopii w dowolnym momencie. Spróbuj uruchomić kopię bezpieczeństwa swojego
katalogu domowego z wykorzystaniem pdumpfs
oraz
cron
a!
pdumpfs
tworzy archiwum YYYY/MM/DD w docelowym
katalogu. Przy pierwszym uruchomieniu pdumpfs
wszystkie źródłowe
pliki są kopiowane do docelowego katalogu. Za kolejnymi uruchomieniami
kopiowane są jedynie te pliki, które zostały zmodyfikowane lub utworzone od
ostatniego uruchomienia programu pdumpfs
, natomiast pozostające
bez zmian są przedstawiane w postaci dowiązania do ich odpowiedników we
wcześniejszych kopiach celem zaoszczędzenia miejsca na dysku.
$ pdumpfs kat_źródłowy kat_docelowy [nazwa docelowa]
Zobacz także: pdumpfs(8)
.
Changetrack
regularnie rejestruje zmiany w tekstowych plikach
konfiguracyjnych. Zobacz także: changetrack(1)
.
# apt-get install changetrack # vi changetrack.conf
Uruchom top
aby zobaczyć, które procesy zużywają największą ilość
zasobów. Naciśnij „P” aby posortować wg zużycia mocy
procesora, „M” wg zużycia pamięci oraz
„k” aby usunąć proces. Alternatywnie, możesz użyć
ps aux | less (sposób BSD) lub ps -efH | less (sposób
System-V). Ta druga składnia pokazuje identyfikatory procesów nadrzędnych.
(PPID), co pozwala na ubicie zombie (niefunkcjonujących procesów
potomnych).
Użyj polecenia kill
aby usunąć proces (lub wysłać do niego sygnał)
według ID procesu. killall
działa analogicznie, ale możliwe jest
podanie nazwy procesu. Najczęściej używane sygnały:
1: HUP, uruchom ponownie demona 15: TERM, normalne zakończenie pracy 9: KILL, bezkompromisowe usunięcie
Jądro pozwala się zabezpieczyć przed wadliwym działaniem systemu za pomocą opcji „Magic SysRq key” podawanej przy jego kompilacji. Wciśnięcie na architekturze i386 Alt-SysRq, a za nim jeden z klawiszy r 0 k e i s u b czyni cuda.
Klawisz `r' przywróci stan klawiatury po takich niespodziankach jak zawieszenie się serwera X. Zmiana poziomu logowania na konsoli na `0' zmniejsza ilość wyświetlanych komunikatów o błędach. sa'k' (z ang. system attention key) zabija wszystkie procesy na danej konsoli wirtualnej. `e' zabija wszystkie procesy na danym terminalu poza procesem init. `i' zabija wszystkie procesy poza procesem init.
`S'ync, `u'mount i re`b'oot służą do wychodzenia z najcięższych kłopotów.
W momencie powstawania tego dokumentu, domyślne jądro dystrybucyjne Debiana nie
było kompilowane z tą opcją, musisz więc skompilować je samodzielnie, jeżeli
chcesz ją aktywować. Szczegółowe instrukcje znajdziesz w pliku:
/usr/share/doc/kernel-doc-version/Documentation/sysrq.txt.gz
lub /usr/src/kernel-version/Documentation/sysrq.txt.gz
.
less
jest domyślną przeglądarką zawartości plików. Klawisz
„h” przywołuje pomoc. Program potrafi o wiele więcej niż
more
. less
może być
„podrasowany” przez wykonanie polecenia eval
$(lesspipe) lub eval $(lessfile) w skryptach startowych
powłoki. Zobacz więcej: /usr/share/doc/lessf/LESSOPEN
. Opcja
-R umożliwia wykorzystywanie nieobrobionego wyjścia oraz włącza
sekwencje ANSI sterujące kolorami. Zobacz także: less(1)
.
w3m
może być użyteczny jako alternatywna przeglądarka w przypadku
niektórych systemów kodowania (np. EUC).
free
oraz top
stanowią dobry sposób uzyskania
informacji na temat pamięci. Nie zwracaj uwagi na wartość
„used” w linii „Mem:”, ale
skorzystaj z liczby umieszczonej poniżej (w przykładzie jest to 38792).
$ free -k # dla komputera z pamięcią o rozmiarze 256MB total used free shared buffers cached Mem: 257136 230456 26680 45736 116136 75528 -/+ buffers/cache: 38792 218344 Swap: 264996 0 264996
Ścisły rozmiar fizycznej pamięci może być sprawdzony poleceniem grep '^Memory' /var/log/dmesg, które w przypadku z przykładu powyżej daje komunikat: „Memory: 256984k/262144k available (1652k kernel code, 412k reserved, 2944k data, 152k init)”.
Total = 262144k = 256M (1k=1024, 1M=1024k) Free to dmesg = 256984k = Total - kernel - reserved - data - init Free to shell = 257136k = Total - kernel - reserved - data
Około 5MB jest nieużyteczne dla systemu, ponieważ jądro tego używa.
# date MMDDhhmmCCYY # hwclock --utc --systohc # hwclock --show
Powyższe polecenia ustawiają sprzętowy zegar na wartość: MM/DD hh:mm, CCYY. Czas jest pokazywany zgodnie z lokalną strefą czasową, jednak sprzętowy zegar jest ustawiany według czasu uniwersalnego (UTC).
Zaglądnij też do: Managing
Accurate Date and Time HOWTO
.
Ustaw czas systemu automatycznie według odległego serwera:
# ntpdate serwer
Dobrym rozwiązanie jest umieszczenie tego w pliku /etc/cron.daily/
jeżeli Twój system ma stałe łącze z Internetem, a dokładniej, z wskazanym
serwerem.
Użyj pakietu chrony
.
W celu wyłączenia wygaszacza ekranu w konsoli tekstowej, należy wykonać:
# setterm -powersave off
Możesz uruchomić konsolę kon2 (kanji) używając:
# kon -SaveTime 0
Mając uruchomieny X Window System:
# xset s off lub # xset -dpms lub # xscreensaver-command -prefs
Przeczytaj odpowiednie strony podręcznika systemowego na temat obsługi innych
funkcji konsoli. Zobacz także stty(1)
. Znajdziesz tam nieco na
temat sprawdzania oraz zmiany ustawień linii komend.
Glibc umożliwia wykorzystanie: getent(1)
do wyszukiwania wpisów w
administracyjnych bazach danych, takich jak passwd, group, hosts, services,
protocols czy networks.
getent baza_danych [klucz ...]
Najprościej odłączyć głośniczek ;-). Albo, dla basha:
echo "set bell-style none">> ~/.inputrc
Aby wyłączyć komunikaty o błędach wysyłane na konsolę tekstową, zaglądnij do
/etc/init.d/klogd
. Ustaw KLOGD="-c
3" w tym skrypcie oraz uruchom /etc/init.d/klogd
restart. Inna metoda, to uruchomienie dmesg
-n3.
Poziomy raportowania błędów są następujące:
Jeśli denerwuje Cię jeden, specyficzny, bezużyteczny komunikat o błędzie,
zastanów się nad zastosowaniem trywialnej łatki na jądro, takiej jak
shutup-abit-bp6
(dostępna w podkatalogu
z przykładami
).
Możesz także zaglądnąć do /etc/syslog.conf
; sprawdź czy jakieś
komunikaty nie są wysyłane do urządzenia powiązanego z konsolą.
Ekran konsoli w systemach uniksowych jest zazwyczaj obsługiwany przez bilioteki
(n)curses. Zapewniają one niezależne od rodzaju terminala metody obsługi
ekranu. Sprawdź: ncurses(3X)
oraz terminfo(5)
.
W systemie Debian, jest nieco wstępnie zdefiniowanych wartości:
$ toe | less # wszystkie wartości $ toe /etc/terminfo/ | less # wartości dające się modyfikować przez użytkowników
Wyeksportuj Twój wybór jako zmienną środowiskową TERM.
Jeżeli wartość terminfo dla xterm
nie działa właściwie z xtermami
nie pochodzącymi z Debiana, zmień rodzaj terminala z
„xterm” na jedną z wersji posiadających ograniczenia
funkcjonalności, jak np.„xterm-r6” podczas zdalnego
logowania do Debiana. Zobacz także:
/usr/share/doc/libncurses5/FAQ
. „dumb” jest
najniższą wspólną definicją dla terminfo.
Jeśli ekran stanie się nieczytelny po wykonaniu polecenia cat jakiś-plik-binarny (możesz nie widzieć poleceń, jakie wpisujesz), zastosuj:
$ reset
Przekształcanie dosowego pliku tekstowego (koniec-linii = ^M^J) na format uniksowy (koniec-linii = ^J):
# apt-get install sysutils $ dos2unix plik_dosowy
Zamiana wszystkich wystąpień WYRAŻENIE_POCZĄTKOWE na WYRAŻENIE_KOŃCOWE we wszystkich plikach PLIKI ...:
$ perl -i -p -e 's/WYRAŻENIE_POCZĄTKOWE/WYRAŻENIE_KOŃCOWE/g;' PLIKI ...
-i służy do „in-place editing”, -p wymusza przetwarzanie w pętli, każdy plik z podanych jako PLIKI ... Jeśli zastępowanie jest złożone, możesz zabezpieczyć się przed błędami używając parametru -i.bak zamiast -i; to zachowa oryginalne pliki dodając do ich nazwy .bak.
Poniższy skrypt usunie linie 5–10 oraz 16–20.
#!/bin/bash ed $1 <<EOF 16,20d 5,10d w q EOF
Polecenia ed
są takie same jak polecenia vi
w trybie
wydawania poleceń. Modyfikacja pliku od tyłu ułatwia jego edycję w skryptach.
Poniższa procedura odnajduje różnice pomiędzy dwoma plikami i tworzy zunifikowane pliki „diff”: plik.łatka0 lub plik.łatka1:
$ diff -u plik.stary plik.nowy1 > plik.łatka0 $ diff -u stary/plik nowy1/plik > plik.łatka1
Pliki „diff”, nazywane także łatkami (patch) są używane do przesyłania uaktualnień kodów źródłowych programów. Po odebraniu takiego pliku, można go zaaplikować na posiadany stary plik używając poleceń:
$ patch -p0 plik.stary < plik.łatka0 $ patch -p1 plik.stary < plik.łatka1
Jeśli masz wszystkie trzy wersje kodów źródłowych, możesz je połączyć używając
narzędzia diff3
:
$ diff3 -m plik.mój plik.stary plik.twój > plik
$ split -b 650m plik # podział pliku na kawałki 650 MB $ cat x* > dużyplik # łączenie plików w jeden duży
Rozpatrzymy plik nazwany DPL
w którym zachowywane są wszystkie
nazwiska przywódców projektu Debian oraz daty rozpoczęcia ich działalności.
Dane oddzielone są przerwami.
Ian Murdock August 1993 Bruce Perens April 1996 Ian Jackson January 1998 Wichert Akkerman January 1999 Ben Collins April 2001 Bdale Garbee April 2002 Martin Michlmayr March 2003
Najczęsciej używanym narzędziem do takich zadań jest Awk.
$ awk '{ print $3 }' <DPL # Miesiące August April January January April April March $ awk '($1=="Ian") { print }' <DPL # przywódca zwany Ian Ian Murdock August 1993 Ian Jackson January 1998 $ awk '($2=="Perens") { print $3,$4 }' <DPL # Kiedy rozpoczął Perens April 1996
Powłoka taka jak Bash również może zostać użyta do obrabiania tego typu plików:
$ while read first last month year; do echo $month done <DPL ... taki sam efekt jak w pierwszym przykładzie z Awk
W tym przypadku wbudowane polecenie read
używa znaków z $IFS
(wewnętrzne separatory pól) by podzielić linie na słowa.
Jeśli zmienisz IFS na ":" będziesz mógł bezproblemowo z powłoką
obrabiać plik /etc/passwd
:
$ oldIFS="$IFS" # zapisuje starą wartość $ IFS=":" $ while read user password uid gid rest_of_line; do if [ "$user" = "osamu" ]; then echo "$user's ID is $uid" fi done < /etc/passwd osamu's ID is 1001 $ IFS="$oldIFS" # przywraca starą wartość
(Jeśli chcesz użyć Awk do tego samego skorzystaj z FS=":" by ustawić separator pól.)
IFS jest również używane przez powłokę do rozdzielania wyników dopełniania parametrów, podmian poleceń i dopełniania arytmetycznego. To nie dotyczy wyrazów w podwójnym lub pojedynczym cudzysłowiu. Domyślną wartością IFS jest kombinacja następujących znaków <spacja>, <tabulator> i <znak nowej linii>.
Uważaj używając trików z IFS w powłoce. Dziwne rzeczy się mogą dziać kiedy powłoka zinterpretuje część skryptu jako swoje wejście.
$ IFS=":," # użyj ":" i "," jako IFS $ echo IFS=$IFS, IFS="$IFS" # echo jest wbudowane w Basha IFS= , IFS=:, $ date -R # zwykłe wyjście polecenia Sat, 23 Aug 2003 08:30:15 +0200 $ echo $(date -R) # pod-powłoka --> wejście do głównej powłoki Sat 23 Aug 2003 08 30 36 +0200 $ unset IFS # przywrócenie domyślnej wartości IFS $ echo $(date -R) Sat, 23 Aug 2003 08:30:50 +0200
Poniższe skrypty wspólnie tworzą piękną całość jeśli są połączone potokiem (ang. pipe).
find /usr | egrep -v "/usr/var|/usr/tmp|/usr/local" # znajduje wszystkie pliki w /usr z wyłączeniem pewnych plików xargs -n 1 polecenie # uruchamia polecenia dla każdego z elementu ze standardowego wejścia xargs -n 1 echo | # dzieli elementy oddzielone białymi znakami na linie xargs echo | # łączy wszystkie linie w jedną grep -e wzorzec| # wyciąga linie zawierające dany wzorzec cut -d: -f3 -| # wyciąga trzecie pole oddzielone znakiem : (np. plik passwd) awk '{ print $3 }' | # wyciąga trzecie pole oddzielone białymi znakami awk -F'\t' '{ print $3 }' | # wyciąga trzecie pole oddzielone tabulatorem col -bx | # usuwa backspace i rozwija tabulacje na spacje expand -| # rozwija tabulacje sort -u| # sortuje i usuwa powtórzenia tr '\n' ' '| # usuwa znaki LF (wysuń wiersz) tr '\r' ''| # usuwa znaki CR (powrót karetki) tr 'A-Z' 'a-z'| # przekształca wielkie litery w małe sed 's/^/# /'| # zmienia każdą linię na komentarz (zaczyna się od #) sed 's/\.ext//g'| # usuwa .ext sed -n -e 2p| # wypisuje drugą linię head -n 2 -| # wypisuje pierwsze 2 linie tail -n 2 -| # wypisuje ostatnie 2 linie
Poniższe sposoby pętli działającej na plikach z rozszerzeniem *.ext zapewniają prawidłową obsługę dziwnych nazw plików na przykład ze spacjami:
for x in *.ext; do if test -f "$x"; then command "$x" fi done
find
w kombinacji z xargs
:
find . -type f -maxdepth 1 -name '*.ext' -print0 | \ xargs -0 -n 1 command
find
z opcją -exec w poleceniu:
find . -type f -maxdepth 1 -name '*.ext' \ -exec command '{}' \;
find
z opcją -exec i krótkim skryptem powłoki:
find . -type f -maxdepth 1 -name '*.ext' \ -exec sh -c "command '{}' && echo 'successful'" \;
Jakkolwiek każdy skrypt Awk może zostać automatycznie przekształcony do postaci
perlowej z użyciem a2p(1)
, to jednolinijkowe skrypty Awk
najwygodniej przekształcać do jednolinijkowych skryptów Perla ręcznie.
Przykładowo:
awk '($2=="1957") { print $3 }' |
może być zapisany jak poniżej:
perl -ne '@f=split; if ($f[1] eq "1957") { print "$f[2]\n"}' | perl -ne 'if ((@f=split)[1] eq "1957") { print "$f[2]\n"}' | perl -ne '@f=split; print $f[2] if ( $f[1]==1957 )' | perl -lane 'print $F[2] if $F[1] eq "1957"' |
Teraz usuwamy wszystkie białe znaki oraz wykorzystujemy przewagę automatycznej konwersji pomiędzy liczbami a ciągami tekstowymi:
perl -lane 'print$F[2]if$F[1]eq+1957' |
Zobacz też do: perlrun(1)
. Wiele równie, lub bardziej szalonych
skrytów Perla znajdziesz tutaj: http://perlgolf.sourceforge.net
.
Poniższe polecenia zczytają stronę WWW do pliku tekstowego. Przydatne na przykład do skopiowania konfiguracji ze strony WWW.
$ lynx -dump http://www.odległa-strona.pl/plik.html >plik.txt
links
i w3m
mogą być również analogicznie użyte, z
dokładnością do niewielkich różnic.
Jeśli to jest archiwum listy dyskusyjnej, użyj munpack
aby uzyskać
zawartość mime.
Poniższe polecenia wydrukują stronę WWW do drukarki/pliku PostScript:
$ apt-get install html2ps $ html2ps URL | lpr
Zobacz także lpr
/lpd
, Rozdział
3.6.1 oraz sprawdź pakiety: a2ps
oraz mpage
służące do tworzenia PostScriptu.
Poniższe polecenia wydrukują stronę podręcznika systemowego do drukarki/pliku PostScript:
$ man -Tps jakaś-strona-podręcznika | lpr $ man -Tps jakaś-strona-podręcznika | mpage -2 | lpr
Możesz połączyć pliki w formacie PostScript lub PDF:
$ gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite \ -sOutputFile=bla.ps -f foo1.ps foo2.ps $ gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite \ -sOutputFile=bla.pdf -f foo1.pdf foo2.pdf
Wyświetlanie czasu trwania danego polecenia.
# time jakieś-polecenie >/dev/null real 0m0.035s # czas, jaki upłynął na zegarku ściennym (czas rzeczywisty) user 0m0.000s # czas spędzony w trybie użytkownika sys 0m0.020s # czas spędzony w trybie jądra
nice
Użyj polecenia nice
(z pakietu GNU shellutils
) by
ustawić podczas startu „przyjazność” programu w stosunku
do innych. renice
(z bsdutils
) lub top
może zmienić tą wartość. Wartość równa 19 oznacza najniższy priorytet procesu.
Wartość ujemna jest uważana za „nieprzyjazną” - wartość
-20 oznacza wysoki priorytet procesu. Tylko superużytkownik może ustawiać
ujemne wartości nice.
# nice -19 top # bardzo „miły” dla innych procesów # nice --20 cdrecord -v -eject speed=2 dev=0,0 disk.img # bardzo szybki
Czasami ekstremalne wartości nice sprawiają więcej kłopotu niż pożytku, dlatego używaj tego polecenia bardzo uważnie.
cron
, at
)
Użyj pakietu cron
lub at
aby zaplanować zadania w
systemie GNU/Linux. Zobacz: at(1)
, crontab(5)
,
crontab(8)
.
Wykonaj polecenie crontab -e edytujące zawartość spisu zadań („crontab”). Przykładowa zawartość takiego pliku:
# użyj /bin/sh do wykonywania poleceń, niezależnie od zapisu w /etc/passwd SHELL=/bin/sh # prześlij standardowe wyjście poleceń do `pawel', niezależnie od tego, # czyj zestaw poleceń jest wykonywany MAILTO=pawel # Min Godzina DzieńMiesiąca Miesiąc DzieńTygodnia polecenie # (DzieńTygodnia i DzieńMiesiąca są połączone spójnikiem LUB) # wykonaj o 00:05 każdego dnia 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 # wykonaj o 14:15 pierwszego dnia każdego miesiąca -- wynik wysylany do Pawła 15 14 1 * * $HOME/bin/monthly # wykonaj o 22:00 każdego dnia tygodnia (1-5), wkurzamy Joe. # % to nowa linia, ostatni % to cc: 0 22 * * 1-5 mail -s "Jest 10 wieczór" joe%Joe,%%Czy wiesz, gdzie są twoje dzieciaki?%.%% 23 */2 1 2 * echo "wykonane 23 minuty po godzinie 0, 2, 4 ..., dnia 1 lutego" 5 4 * * sun echo "wykonane 04:05 każdej niedzieli" # Wykonaj o 03:40 w pierwszy poniedziałek miesiąca 40 3 1-7 * * [ "$(date +%a)" == "Mon" ] && command -args
Uruchom polecenie at
aby wykonać jednorazowe zadanie:
$ echo 'polecenie -argumenty'| at 3:40 monday
screen
a
Program screen
umożliwia uruchomienie wielu
pozornych terminali, każdy ze swoją własną powłoką, na
pojedynczym fizycznym terminalu lub emulatorze terminala. Nawet jeśli
używasz wirtualnych konsoli Linuksa lub wielu x-terminali, program
screen
jest wart zainteresowania z uwagi na bogaty zbiór
możliwości, takich jak np.:
screen
od terminala i ponowne jej przyłączenie później. Pozwala to na zdalne
uruchomienie czasochłonnego zadania, rozłączenie i powrócenie do niego, gdy już
się wykona.
Jeśli często podłączasz się do systemu ze zdalnego terminala lub korzystając z
programu emulującego terminal w trybie VT100, screen
uczyni Twoje
życie łatwiejszym :-) dzięki opcji detach.
screen
ze sporą ilością sesji zawierających różne programy
screen
jednocześnie do odłączenia sesji i zakończenia połączenia)
screen
magicznie przyłączy się
ponownie i wszystkie sesje zostaną przywrócone.
screen
a
Gdy uruchomisz program screen
, wszystkie naciskane klawisze są
wysyłane do aktualnej sesji, za wyjątkiem kombinacji wywołującej system poleceń
screen
a. Domyślnie jest to Ctrl+A. Wszystkie
polecenia programu screen
są wpisywane przy użyciu
Ctrl+A a następnie pojedynczych klawiszy. Użyteczne polecenia:
^A ? pomoc do programu ^A c utwórz nową sesję i przełącz się do niej ^A n następna sesja ^A p poprzednia sesja ^A 0 idź do sesji numer 0 ^A w wyświetl listę sesji ^A a Wyślij Ctrl+A do aktualnej sesji (normalne Ctrl+A jest przechwytywane) ^A h zapisz kopię aktualnej sesji do pliku ^A H rozpocznij/zakończ przechwytywanie aktualnej sesji do pliku ^A ^X zabezpiecz terminal (ochrona hasłem) ^A d odłącz sesje od terminala ^A DD odłącz sesje od terminala, a terminal od systemu
To tylko niewielki podzbiór poleceń programu screen
. Jeśli
istnieje coś, co chciał(a)byś wykonać przy użyciu screen
a zapewne
jest to możliwe!
Zobacz także: screen(1)
.
screen
a
Jeśli zauważysz, że backspace i/lib Ctrl+H nie działają dobrze podczas
działania programu screen
, wyedytuj plik
/etc/screenrc
, znajdź linię:
bindkey -k kb stuff "\177"
i zakomentuj ją (np. dodaj „#” jako pierwszy znak tej linii).
screen
a w X Window System
Sprawdź xmove
. Poczytaj xmove(1)
.
Zainstaluj pakiety: netkit-ping
, traceroute
,
dnsutils
, ipchains
(dla jądra 2.2),
iptables
(dla jądra 2.4), oraz net-tools
i wykonaj:
$ ping www.google.com # sprawdź połączenie z www.google.com $ traceroute www.google.com # sprawdź trasę pakietów $ ifconfig # sprawdź ustawienia komputera $ route -n # sprawdź ustawienia tras pakietów $ dig [@serwer-dns.pl] host.dom [{a|mx|any}] |less # sprawdź wpisy DNS dla host.dom zapisane w dns-server.com # typy rekorów to: {a|mx|dowolne} $ ipchains -L -n |less # sprawdź filtry pakietów (jądro 2.2) $ iptables -L -n |less # check packet filter (jądro 2.4) $ netstat -a # znajdź wszystkie otwarte porty $ netstat -l --inet # znajdź nasłuchujące porty $ netstat -ln --tcp # znajdź nasłuchujące porty TCP (numerycznie)
Aby wypchnąć listy z lokalnej kolejki, możesz użyć:
# exim -q # wypchnij czekające listy # exim -qf # wypchnij wszystkie listy # exim -qff # wypchnij nawet zamrożone przesyłki
-qff może być użyteczną opcją w skrypcie
/etc/ppp/ip-up.d/exim
.
Aby usunąć zamrożone przesyłki z lokalnej kolejki, wysyłając jednocześnie komunikat o błędzie, wykonaj:
# exim -Mg `mailq | grep frozen | awk '{ print $3 }'`
Jeśli Twój katalog domowy został zapełniony i procmailowi nie udało się dokonać
swego dzieła, musisz ręcznie przenieść pocztę do posortowanych skrzynek w Twoim
katalogu domowym z pliku /var/mail/nazwa_użytkownika
.
Po zwolnieniu miejsca w katalogu domowym wykonaj poniższe czynności:
# /etc/init.d/exim stop # formail -s procmail </var/mail/nazwa_użytkownika # /etc/init.d/exim start
W celu usunięcia zawartości plików takich jak dzienniki systemowe, nie używaj polecenia rm do usunięcia pliku i nie twórz pustego od nowa, ponieważ pomiędzy tymi operacjami, jakaś część systemu może chcieć dokonać zapisków do takiego pliku. Poniżej pokazano sposób na bezpieczne usuwanie zawartości pliku:
$ :>plik-do-wyczyszczenia
Poniższe polecenia utworzą sztuczne lub puste pliki:
$ dd if=/dev/zero of=nazwa_pliku bs=1k count=5 # 5KB samych zer $ dd if=/dev/urandom of=nazwa_pliku bs=1m count=7 # 7MB losowej zawartości $ touch nazwa_pliku # pusty plik, jeśli nie istnieje
Przykładowo, poniższe polecenie, wykonane z powłoki dyskietki startowej systemu
Debian usunie całkowicie zawartość dysku twardego /dev/hda
:
# dd if=/dev/urandom of=/dev/hda ; dd if=/dev/zero of=/dev/hda
chroot
Program chroot
, chroot(8)
, pozwala na uruchomienie
różnych instancji środowiska GNU/Linux na jednym systemie bez ponownego
uruchomiania go.
Można też uruchamiać zasobożerne programy takie jak apt-get
czy
dselect
w środowisku chroot na szybkim komputerze mając
zamontowane na wolniejszym komputerze zasób NFS na prawach r/w, który to zasób
jest głównym punktem montowania na wolniejszym komputerze.
chroot
Debianowe środowisko chroot można łatwo stworzyć przy pomocy
debootstrap
w Woodym. Na przykład jeśli chcesz utworzyć chroota z
Sidem w katalogu /sid-root mając szybki dostęp do Internetu:
main # cd / ; mkdir /sid-root main # debootstrap woody /sid-root http://ftp.debian.org/debian/ ... obserwuj jak program ściąga całą podstawę systemu main # echo "proc-sid /sid-root/proc proc none 0 0" >> /etc/fstab main # mount proc-sid /sid-root/proc -t proc main # cp /etc/hosts /sid-root/etc/hosts main # chroot /sid-root /bin/bash chroot # apt-setup # ustawianie /etc/apt/sources.list chroot # vi /etc/apt/sources.list # wskaż źródła na unstable chroot # dselect # możesz też użyć aptitude, zainstaluj mc i vima :-)
W tej chwili powinieneś posiadać w pełni funkcjonalny system Debian, w którym możesz mieszać bez strachu, że coś popsujesz w Twojej głównej dystrybucji.
Ta sztuczka z debootstrap
może też być użyta do instalcji Debiana
bez użycia dysku instalacyjnego Debiana lecz przy wykorzystaniu innej
dystrybucji GNU/Linux. Zobacz też http://www.debian.org/releases/stable/i386/ch-preparing#s-linux-upgrade
.
chroot
Wpisanie chroot /sid-root /bin/bash jest proste, ale zostawia to wiele zmiennych środowiskowych walających się po pamięci, a które nie są potrzebne lub nawet są niepożądane. Dużo lepszym sposobem jest uruchomienie kolejnego procesu login na oddzielnym terminalu wirtualnym, z którego możesz się bezpośrednio logować do systemu chroot.
Ponieważ domyślnie w systemie Debian terminale tty1 do
tty6 są przeznaczone na konsole Linuksa, a tty7 na
sesję X Window System, użyjemy konsoli tty8 jako konsoi chroot.
Po utworzeniu środowiska chroot tak jak to zostało opisane w Uruchamianie innej dystrybucji Debiana przy użyciu
chroot
, Rozdział 8.6.34.1, wpisz będąc rootem w głównym
systemie:
main # echo "8:23:respawn:/usr/sbin/chroot /sid-root "\ "/sbin/getty 38400 tty8" >> /etc/inittab main # init q # przeładowanie init
chroot
Chcesz bezpiecznie uruchamiać najnowsze Xy i GNOME w środowisku chroot? Jest to możliwe! Poniższy przykład uruchomi GDM na wirtualnym terminalu vt9.
Najpierw zainstaluj system chroot wg. opisu w Uruchamianie innej dystrybucji Debiana przy użyciu
chroot
, Rozdział 8.6.34.1. Z głównego systemu skopiuj
kluczowe pliki konfiguracyjne do systemu chroot.
main # cp /etc/X11/XF86Config-4 /sid-root/etc/X11/XF86Config-4 main # chroot /sid-root # lub użyj konsoli chroot chroot # apt-get install gdm gnome x-window-system chroot # vi /etc/gdm/gdm.conf # wykonaj s/vt7/vt9/ w sekcji [servers] chroot # /etc/init.d/gdm start
Plik /etc/gdm/gdm.conf
został tak zmieniony, by pierwszą konsolą
była konsola vt9, a nie vt7.
Teraz możesz bez problemu przełączać się między funkcjonalnymi środowiskami X systemu głównego i systemu chroot przez proste przełączanie wirtualnych terminali Linuksa, np. za pomocą kombinacji klawiszy Ctrl-Alt-F7 i Ctrl-Alt-F9. Miłej zabawy!
[FIXME] Dodaj komentarz i dowiązanie do skryptu init z chrootowanego gdm.
chroot
Środowisko chroot dla innej dystrybucji można utworzyć całkiem prosto.
Instalujesz system na oddzielnej partycji korzystając z instalatora danej
dystrybucji, i wykonujesz poniższe polecenia (przy założeniu, że główna
partycja innej dystrybucji to /dev/hda9
):
main # cd / ; mkdir /other-dist main # mount -t ext3 /dev/hda9 /other-dist main # chroot /other-dist /bin/bash
Następnie postępuj tak jak opisano to w Uruchamianie
innej dystrybucji Debiana przy użyciu chroot
, Rozdział
8.6.34.1, Ustawianie loginu dla
chroot
, Rozdział 8.6.34.2 oraz Ustawianie Xów do działania w chroot
, Rozdział
8.6.34.3.
chroot
pbuilder
jest bardziej wyspecjalizowanym narzędziem
przygotowującycm środowisko chroot i budującym w nim pakiet. Jest to idealny
system sprawdzający, czy zależności budowania są poprawne oraz do upewnienia
się, że niepotrzebne i niepoprawne zależności budowania nie znajdą się w
pakiecie wynikowym.
Możesz sprawdzić czy dwa pliki są tym samym plikiem z dwoma dowiązaniami:
$ ls -li plik_1 plik_2
Jeżeli plik.img
zawiera obraz zawartości twardego
dysku, zaś oryginalny twardy dysk ma konfigurację dającą: xxxx =
(bajtów/sektor) * (sektorów/cylinder), wtedy możesz taki obraz zamontować do
katalogu /mnt
poleceniem:
# mount -o loop,offset=xxxx plik.img /mnt
Zauważ, że większość twardych dysków ma 512 bajtów/sektor.
Przykładowy dostęp do plików serwowanych przez Windows:
# mount -t smbfs -o username=moja_nazwa,uid=mój_uid,gid=mój_gid \ //serwer/dzielony_zasób /mnt/smb
# smbmount //serwer/dzielony_zasób /mnt/smb \ -o "username=moja_nazwa,uid=mój_uid,gid=mój_gid"
# smbclient -L 192.168.1.2
Otoczenie sieciowe Samby może być sprawdzane spod GNU/Linuksa:
# smbclient -N -L adres_ip_twojego_komputera | less # nmblookup -T "*"
Obsługa wielu obcych systemów plików jest wspierana obecnie przez linuksowe jądro, a więc mogą być one dostępne w prosty sposób, poprzez zamontowanie urządzeń je zawierających. Dla niektórych systemów plików są dostępne także specjalne narzędzia umożliwiające dostęp do nich bez montowania urządzeń. Są one dostępne jako programy pracujące w przestrzeni użytkownika, a zatem wsparcie ze strony jądra nie jest potrzebne.
mtools
: system plików MSDOS (MS-DOS, Windows)
cpmtools
: system plików CP-M
hfsutils
: system plików HFS (native Macintosh)
hfsplus
: system plików HFS+ (modern Macintosh)
Do tworzenia i weryfikacji systemu plików MS-DOS FAT użyteczne może być
narzędzie: dosfstools
.
Poniżej przedstawiamy kilka przykładów niebezpiecznych działań. Niebezpieczeństwo jest jeszcze większe, jeśli używasz konta uprzywilejowanego (root).
W poleceniu ,,rm -rf .*'', ,,.*'' jest rozwijane w taki sposób, że zawiera także katalogi ,,.'' oraz ,,..''. Jeśli więc posiadasz uprawnienia zapisu do katalogu nadrzędnego, to polecenie to usunie także wszystkie katalogi znajdujące się obok aktualnego katalogu.
Utrata kilku ważnych plików, takich jak /etc/passwd
na skutek
głupiej pomyłki bywa problematyczne. Debian wykonuje regularne kopie tych
plików w /var/backup/
. Kiedy przywrócisz te pliki, musisz ręcznie
ustawić odpowiednie prawa.
# cp /var/backup/passwd /etc/passwd # chmod 644 /etc/passwd
Przeczytaj także Przywracanie danych wyboru pakietów, Rozdział 6.3.4.
Debian Reference
CVS, poniedziałek, 3 kwiecień 2005, 22:58:23 UTCosamu@debian.org
fenio@o2.pl