Instrukcja konfiguracji stałego katalogu domowego dla Knoppix'a na zasobie NFS.

I WSTĘP

Jeśli "zszedł" Ci dysk twardy i nie masz środków na zakup nowego, nie oznacza to konieczności spisania komputera na straty. Tak właśnie było w moim przypadku czego ubocznym owocem :-) jest niniejsza instrukcja. Jeśli tylko komputer posiada napęd CD oraz kartę sieciową, możesz z niego korzystać jak dotąd.

Knoppix to oparta na Debianie dystrybucja Linuksa uruchamiana wprost z płyty CD (tzw. LiveCD) i nie wymagająca posiadania dysku twardego (choć można ją również zainstalować "tradycyjnie"). Ponieważ płyta CD jest nośnikiem tylko do odczytu, pojawia się niedogodność w postaci braku możliwości zapisania owoców pracy (czy choćby dokonanych ustawień w konfiguracji) pomiędzy restartami (przy kolejnym uruchomieniu wszystko wraca do wartości domyślnych). Teoretycznie można ustawienia zapisać na innych nośnikach wymiennych ale: a.) na dyskietce 1,44MB mało co się zmieści; b.) pendrive'a nie mamy; c.) dysk twardy właśnie nam "zszedł" :-)

W niniejszej instrukcji opiszemy sposób wykorzystania dysku innego komputera jako miejsca przechowywania danych i konfiguracji w czasie pracy przy użyciu płyty z dystrybucją Knoppix LiveCD.

II ZAŁOŻENIA

  1. Twój bezdyskowy komputer (zwany dalej klientem) ma napęd CD-ROM, stację dyskietek oraz kartę sieciową

  2. Masz drugi komputer (zwany dalej serwerem) z dyskiem twardym i zainstalowanym tam Linuksem

  3. Zdajesz sobie sprawę, że NFS zasadniczo nie był tworzony pod rozwiązania rozległe i nie wystawisz swoich danych publicznie (tzn. przeczytałeś co najmniej ten fragment ogólnej dokumentacji)
Jeśli są spełnione; ruszamy...

III CZĘŚĆ SERWERA

  1. Jeśli jeszcze nie mamy to instalujemy pakiety do obsługi NFS (autor używa Debiana stąd program menadżera pakietów; dla innych dystrybucji będą to polecenia yum lub emerge i pakiety mogą mieć odrobinę inne nazewnictwo)

    aptitude install portmap nfs-common nfs-kernel-server

  2. Zakładamy użytkownika knoppix

    adduser knoppix

  3. Dodajemy siebie do grupy knoppix (zakładam że serwer jest jednocześnie stacją roboczą której używamy na codzień i chcemy mieć możliwość swobodnej wymiany danych pracując "raz z serwera, raz z klienta")

    adduser [nasz_login] knoppix

  4. Zapisujemy sobie UID i GID założonego konta (z uwagi na ograniczenia NFS będzie to potem potrzebne do unifikacji tych wartości z klientem)

    cat /etc/passwd | grep knoppix

    (Będą to te dwie wartości numeryczne dzielone dwukropkiem)

  5. Definiujemy katalog knoppix'a jako zasób do współdzielenia przez NFS dodając do pliku /etc/exports wpis:

    /home/knoppix stacjabezdysku.naszadomena.local(rw,sync,subtree_check)

    Jeśli nie używamy własnego DNS'u który nam tę nazwę rozwiąże, to naturalnie zamiast niej wpisujemy adres IP naszego klienta (co nota bene jest zawsze trochę bezpieczniejsze). By udostępnić zasób więcej niż jednej stacji można podawać maski (przykłady po wstukaniu: man exports)

  6. Opcjonalne (choć zdecydowanie zalecane) czynności.
    Demony związane z NFS bindują się do losowych portów zmieniających się przy restartach serwera. Znakomicie uniemożliwia to kontrolę dostępu do nich. Jeśli twój serwer jest bezpośrednio wpięty do internetu to należy OBOWIĄZKOWO (a nawet gdy stoi za ruterem to WARTO) przypisać im stałe porty celem uwzględnienia w tcpwrappers i regułach firewall'a.
    Portmap i sam NFS mają porty standardowe (111 i 2049); my przydzielimy stałe porty (podane dalej to tylko propozycje) usługom: rpc.quotad (32764), rpc.statd-bc (32765), rpc.statd (32766), rpc.mountd (32767) i rcp.lockd (32768) poprzez wpisanie w poniższych plikach podanych wartości:
    Plik Wpis
    /etc/default/quota RPCRQUOTADOPTS="-p 32764"
    /etc/default/nfs-common STATDOPTS="--port 32765 --outgoing-port 32766"
    /etc/default/nfs-kernel-server RPCMOUNTDOPTS="-p 32767"
    /etc/modprobe.d/options.local options lockd nlm_udpport=32768 nlm_tcpport=32768
    Polityka "najpierw domyślnie odrzucaj wszystko zewsząd - następnie dopuszczaj co i skąd dozwolone" jest naturalnie kwestią każdego administratora choć wydaje się rozsądna.
    Zakładając że w /etc/hosts.deny mamy ALL: ALL a w regułach iptables domyślną politykę INPUT DROP definujemy odpowiednio:
    Plik /etc/hosts.allow Skrypt ustawiający reguły iptables
    portmap: [adres_klienta]
    2049: [adres_klienta]
    itd. porty usług rpc
    iptables -A INPUT -i [interfejs] -p tcp -m multiport --dports 111,2049 -s [adres_klienta] -j ACCEPT
    iptables -A INPUT -i [interfejs] -p udp -m multiport --dports 111,2049 -s [adres_klienta] -j ACCEPT
    iptables -A INPUT -i [interfejs] -p tcp -m multiport --dports 32764:32768 -s [adres_klienta] -j ACCEPT
    iptables -A INPUT -i [interfejs] -p udp -m multiport --dports 32764:32768 -s [adres_klienta] -j ACCEPT

  7. Jeśli jeszcze tego nie zrobiliśmy, przygotowujemy płytę z Knoppix'em:
    Mirrorów jest sporo, tu wybrano http://www.kernel.org/ a obrazy nazywane są wg zasady: KNOPPIX_VX.Y.ZCD-YYYY-MM-DD-LG.iso gdzie: X.Y.Z=kolejna wersja; YYYY-MM-DD=data jej wydania; LG=język.
    Np. na dzień pisania instrukcji najnowszą (a taką wybieramy) była wersja 5.1.1 z 2007-01-04 zatem komenda brzmi:

    wget http://www.kernel.org/pub/dist/knoppix/KNOPPIX_V5.1.1CD-2007-01-04-EN.iso

    Ściągamy też informację o sumach kontrolnych obrazu która wisi w pliku z dodatkowym rozszerzeniem *.md5.asc czyli w naszym przykładzie:

    wget http://www.kernel.org/pub/dist/knoppix/KNOPPIX_V5.1.1CD-2007-01-04-EN.iso.md5.asc

    Wyświetlamy sumę MD5 jaką opublikował Autor:

    cat ./KNOPPIX_V5.1.1CD-2007-01-04-EN.iso.md5.asc

    Obliczamy ją dla ściągniętego obrazu:

    md5sum ./KNOPPIX_V5.1.1CD-2007-01-04-EN.iso

    Jeśli się nie zgadza, kasujemy plik i próbujemy z innego mirrora; jak się zgadza - nagrywamy na płytę.
    UWAGA. NIE chodzi tu o nagranie na płytę PLIKU *.iso tylko OBRAZU jaki ten plik zawiera :-) krótko mówiąc trzeba wybrać opcję "nagraj obraz płyty" a nie "nagraj płytę z danymi".

  8. Logujemy się jednokrotnie jako użytkownik knoppix (żeby sobie utworzył inicjalnie pliki i katalogi konfiguracyjne dla xservera i desktopmanagera).

  9. Sprawdzamy czy na pewno portmap, nfs-common i nfs-kernel-server uruchamiają się przy starcie (mają symlinki z "S" w odpowiednim runlevel'u); restartujemy nasz serwer a z nagraną płytą przesiadamy się do naszego komputera-klienta.

IV CZĘŚĆ KLIENTA

  1. W setupie ustawiamy "BOOT ORDER" aby pierwszy był CD-ROM a druga stacja dyskietek (co pozwoli nam nie wyjmować jej za każdym razem; np. w moim laptopie tak się ustawić nie da, FDD ma wyższy priorytet co jest trochę denerwujące).

  2. Po ujrzeniu ekranu z Logo Knoppix'a wpisujemy:

    knoppix lang=pl

  3. Po uruchomieniu środowiska graficznego umieszczamy w stacji pustą sformatowaną (na FAT32) dyskietkę.

  4. Wybieramy menu: KNOPPIX -> Configure -> Save KNOPPIX configuration zapisując konfigurację na dyskietce.

  5. Zaglądamy na tę dyskietkę (np. Midnight Commanderem a jej zawartość będzie w katalogu /media/fd0 ew. po zamontowaniu również w /mnt/floppy) i znajdujemy plik knoppix.sh. Na KONIEC tego pliku wklejamy ten kod (dostosowując oczywiście domyślnie podstawiane wartości do swojego środowiska - tu właśnie przydadzą się spisane UID i GID użytkownika knoppix na serwerze). Możemy w tym celu użyć wbudowanego w MC edytora lub szybciej podając polecenie:

    cat ./mntnfskh.sh >> /media/fd0/knoppix.sh

  6. Po restarcie i ujrzeniu ekranu z Logo Knoppix'a tym razem (i odtąd zawsze) wpisujemy:

    knoppix floppyconfig

  7. Przed załadowaniem środowiska graficznego zostaniemy poproszeni o decyzję czy montować katalog domowy knoppix'a na zasobie NFS i podanie/weryfikację parametrów. Naturanie jeśli gościmy z naszym laptopem w terenie bez dostępu do domowej/firmowej sieci wybieramy "Nie" i w takim wypadku użyta zostanie "uboga" zawartość katalogu domowego mieszcząca się na zapisanej za pierwszym razem dyskietce (c'est la vie). Jednak gdy mamy do tej sieci dostęp a serwer "żyje" to katalog domowy zostanie tam zamontowany umożliwiając korzystanie z owoców pracy wykonanej na kliencie (i zapisu ustawień dokonanych w konfiguracji).

Status projektu: works4me_should4u2