+=-=-=-=-=-=-=-=-=-=-=-=-=-=+
                       |      aREXus tHE tHiEF     |
                       |hTTp://wWW.tANDe.CoM/aREXus|
                       |  mAiLTo:aREXus@tANDe.CoM  |
                       +=-=-=-=-=-=-=-=-=-=-=-=-=-=+

                               -=[4HaCKeRS]=-
                              -=[ISO-8859-2]=-
                             -=[1997 VII 021]=-
                            -=[PL v1.01 aLPHA]=-
                            -=[00000000000010]=-
                        -=[uNiX bEGiNERs tUToRiAL]=-

   +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
   |Poniższe opracowanie omawia, w sposób podstawowy i łopatologiczny,   |
   |obsługe i wykorzystanie Unix'a i Internet'u, dla potrzeb szarych     |
   |ludzi ;-> Autor, zastrzega sobie, ze nie odpowiada, za użycie tego   |
   |opracowania, do niecnych i niezgodnych z prawem celów! Opracowanie   |
   |to jest rozprowadzane w formie FreeWare. Jeśli zauważyłes błędy,     |
   |niezgodności lub nawet bzdury, to napisz do mnie i wyjaśnij sprawę.  |
   +---------------------------------------------------------------------+

                               sPiS tREśCi


I.     SEKCJA A : start
I.1.   Jak otworzyć konto w InterNet'cie?
I.2.   Jak się zalogować?
I.3.   Co to za plik /etc/passwd itp?
I.4.   Jakie są zadania hackera?
I.5.   Co to są shelle i system plików w Unix'ie?

II.    SEKCJA B : podstawy unix'a
II.1.  Gdzie jesteśmy?
II.2.  Jak zobaczyć zawartość katalogu i uprawnienia?
II.3.  Uprawnienia plików cd.?
II.4.  Co to są grupy?
II.5.  Jak się szybko poruszać po systemie plików?
II.6.  Co to są dżokery?
II.7.  Jakie są dżokery specjalne?
II.8.  Co to są polecenia procesowe?
II.9.  Polecenie "su".
II.10. Jak spakować dane?
II.11. Ile miejsca na dysku?
II.12. Jak przygotowywać własny system plików?
II.13. Co to są aliasy?
II.14. Jak się ze sobą porozumiewać?

III.   SEKCJA C : sieć
III.1. Co to jest URL?
III.2. Co to jest FTP?
III.3. Co to jest Telnet?
III.4. Co to jest WWW?
III.5. Co to jest Gopher?
III.6. Co to jest Veronica?
III.7. Co to jest Wais?
III.8. Co to jest Archie?
III.9. Co to jest E-Mail?
III.10.Co to są News'y i Usenet?
III.11.Co to jest Jughead?

IV. SEKCJA D : podstawy
IV.1. Co to jest FakeMail?

V.    SEKCJA E : internet
V.1.  Gdzie szukać w InterNet'cie?

VI.   SEKCJA F : koniec

                                *  *  *

I. Sekcja A : start
1. Jak otworzyć konto w InterNet'cie?
   Na początku musimy posiadać jakiekolwiek konto w internecie, najłatwiej
   jest się zgłosić do jednego z providerów (polbox itd.), lub też
   można otrzymać konto na uczelni, ba‡ w szkole średniej.
   Standardowo providerzy oferują, pełny dostęp do sieci, czyli Unix Shell
   i SLIP/PPP, adres poczty elektronicznej i własna stronę WWW.
   Ostatnio, już pewien czas, działa bezpłatny (bez przesady, tylko
   telefoniczna taryfa lokalna) dostęp do internetu, oferowany przez tpsa,
   pod numerem (dostępnym w całej Polsce) 0202122, jako login i hasło
   wpisujemy ppp, czyli:
   login: ppp
   passwd: ppp
   i już, niestety, jest tu tylko dostępny PPP, tak więź musimy odpowiednio,
   skonfigurować oprogramowanie. To nie wszystko, firma PolBox, oferuje
   bezpłatne konta pocztowe (do 500KB) dla każdego, także firm, oraz
   możliwość założenia własnej strony WWW (za friko!) do 2MB, całkiem nieźle.
   Chyba od nie dawna, także firma Optimus udostępnia bezpłatne konta,
   musicie zobaczyć.
   Gdy wykupimy (dostaniemy) już konto, określimy swój identyfikator i
   dostaniemy hasło, przychodzi pora by sie zalogować i ...
2. Jak się zalogować?
   Standardowo, w Unix'ie na początku wpisujemy swój identyfikator, następnie
   hasło, jednak jak wiecie, nie ma jednego Unix'a, odmian tego systemu są
   dziesiątki, że wymienię: Berkeley, CPIX, FOS, Genix, HP-UX, IS/I, OSx, Sys3,
   PC-IX, PERPOS, Ultrix, Zeus, Xenix, UNITY, VENIX, UTS, Unisys, Unip lus+,
   UNOS, Idris, QNIX, Coherent, Cromix, System III, System 7, Sixth edition,
   FreeBSD (Darmowy) czy w końcu Linux (Darmowy) i to w kilku edycjach, jak
   np. Debian, Red Hat (Colgate;-) czy Slackware. Ale powróćmy do logowania
   które zawyczaj wygląda tak:

   np. w Linux'ie

   alpha login: jasio
   Password: 

   gdzie, alpha to nazwa komputera

   Oczywiście, że może zamiast login (Login), pojawić się Username (username),
   a Password może być pisane z małej litery (password). Zwyczajowo (?),
   przyjeło się, że login składa się tylko z małych liter, zazwyczaj od 3-8,
   za to hasło jest już kombinacją małych i dużych liter, oraz cyfr znaków
   specjalnych (?) (3-8) np: Zs23dU3lajeT8. Standardowo można sie zalogować
   jako: root, sys, bin, trouble, deamon, uucp, nuucp, rje, lp, adm...
   Hasła takie są kodowane i sprawdzane z hasłami w pliku /etc/passwd czy
   /etc/shadow, tą właśnie metodę wykorzystują wszelkiej maści hackerzy ;->
3. Co to za plik /etc/passwd itp?
   Oto przykładowy plik /etc/passwd przy wyłączonym shadowingu, bardzo nas,
   hackerów interesujacy!!!!

   # cat /etc/passwd
   root:Erre5ffKllg9o:0:0:root:/root:/bin/bash
   bin:*:1:1:bin:/bin:
   daemon:*:2:2:daemon:/sbin:
   adm:*:3:4:adm:/var/adm:
   lp:*:4:7:lp:/var/spool/lpd:
   sync:*:5:0:sync:/sbin:/bin/sync
   shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown
   halt:*:7:0:halt:/sbin:/sbin/halt
   mail:*:8:12:mail:/var/spool/mail:
   news:*:9:13:news:/var/spool/news:
   uucp:*:10:14:uucp:/var/spool/uucp:
   operator:*:11:0:operator:/root:
   games:*:12:100:games:/usr/games:
   gopher:*:13:30:gopher:/usr/lib/gopher-data:
   ftp:*:14:50:FTP User:/home/ftp:
   nobody:*:99:99:Nobody:/:
   jasio:78P1IBwerttPk:500:500:Jasio Jaskowski:/home/jasio:/bin/bash
   halinka:IO06GpLrt8yLN:501:501:Halinka z Lublinka:/home/halinka:/bin/bash
   [...]
   #

   czyli:

   login:password:uid:gid:comment:home:shell

   Pierwsza pozycja okresla login stosowany przy logowaniu do systemu,
   następnie jest zakodowane hasło (jeśli jest puste, to przy wpisywaniu
   hasła podczas logowania wystarczy wcisnąć ENTER!), trzecie pole to tkz.
   User Id (UID), czwarte pole to Group Id (GID), piąte pole, to pole opisu,
   następne wskazuje na katalog domowy użytkownika, a ostatnie na powłokę.
   Tak zaś wygląda plik /etc/password z włączonym shadowingiem, hasła są
   wtedy przechowywane w pliku /etc/shadow!!!

   # cat /etc/shadow
   root:x:0:0:root:/root:/bin/bash
   [...]
   jasio:x:500:500:Jasio Jaskowski:/home/jasio:/bin/bash
   halinka:x:501:501:Halinka z Lublinka:/home/halinka:/bin/bash
   #

   Teraz z kolei (przy włączonym shadwingu) interesuje nas plik /etc/shadow !

4. Jakie są zadania hackera?
   Twoim głównym zadaniem jako hackera jest zdobycie uprawnień, równych
   root'owi, co można (ale są też inne sposoby!!!) zrobić zdobywając hasło
   root'a, co pociaga (ale nie jest to jedyny sposób!!!) za soba zdobycie
   pliku z haslami /etc/passwd lub /etc/shadow!
   Gdy uda Ci się już to zdobyć, musisz zaopatrzyć się (lub samemu zrobić)
   plik ze slownikiem oraz program do kodowania/sprawdzania.
   Program taki bierze wyraz ze słownika, koduje go i porównuje tak
   zakodowane słowo ze słowem w pliku z hasłami.
   Dobry slownik powinien mieć około 30-40MB!!!

   Można też, jeśli Ci się uda zmienić wiersz z hasłem root'a na

   root::0:0:::

   (oczywiście nie musi to być użytkownik root, ważne, żeby UID i\lub GID, 
   miały wartość zero czyli np: jasio::0:0:::), a jeszcze lepiej bez żadnego
   logina, czyli:

   ::0:0:::

   i wystarczy teraz:

   $ su ""
   # 
 
   ale uwaga, taka konstrukcja:

   login: root (jasio lub )
   Password:  

   może (i raczej napewno) nie da się zastosować ;-(

   A jak już jesteśmy zalogowani jako root (jasio itp.) dobrze jest
   ustawić jakieś hasełko, będzie mniej podejrzanie ;-)

   # passwd
   Enter password: 
   New password: 
   Rep. password: 
   #

   i my szalejemy, a prawdziwy root płacze ;->

5. Co to są shelle i system plików w Unix'ie?
   Po prawidłowym zalogowaniu ukarze nam się, $ lub #, czyli Unix'owski prompt
   (warto zauważyć, że bardzo czesto znak $ zarezerwowany jest dla prostego
   użytkownika, a znak # tylko dla root'a).
   Znaleźliśmy się w _prawdziwym_ (nie jakieś windowsy'95 czy NT;) systemie
   operacyjnym. Unix składa sie z trzech komponentów, tj. kernela, shella i
   systemu plików. Kernel jest głównym jadrem systemu, zarządza pamiecią,
   systemem plików oraz programowymi i sprzętowymi urządzeniami. Zawiera też
   język niskiego poziomu, shell obsługujący (utrzymującym) procesy.
   Shell jest to język wysokiego poziomu, który może być używany do wykonywania
   koment systemu, lub też jako język programowania, do pisania skomplikowanych
   skryptów. Standardowymi unix'owymi shell'ami są:

   /bin/ash
   /bin/bash (Bourne-shell)
   /bin/sh (Bourne-shell)
   /bin/csh (C-shell)
   /bin/ksh (Korn-shell)
   /bin/tcsh
   /bin/zsh

   (Do pisania skryptów, osobiście, polecam bash'a lub tcsh'a)

   System plików przedstawiamy w trzech kategoriach:

   katalogi (directories)
   pliki pospolite (ordinary files)
   pliki specjalne (d, -, l, c)

   Oto najprostsza struktura systemu plików BSD:


                             (root directory)
                                    /
                                    |
              +-----+------+-----+--+--+-----+------+-----+
              |     |      |     |     |     |      |     |
              /bin  /dev   /etc  /lib  /u    /mnt   /usr  /tmp
                                       |            |
                                       +            |
                                 +-----+-(...)-+    |
                                 |     |       |    |
                                 jasio ala     jan  |
                                                    |
     +------+-------+------+---------+--------+-----+--(...)--+
     |      |       |      |         |        |     |         |
     adm    bin     etc    include   tmp      man   ucb       spool
                                                              |
 +--------+----------+----+--------+-----------+------+-------+
 |        |          |    |        |           |      |       |
 at       batch      lpd  mqueue   mail        news   uucp    uucppublic


   Oto najprostsza struktura systemu plików Systemu V.4:

                             (root directory)
                                    /
                                    |
  +-----+------+-----+-----+-----+--+---+-----+
  |     |      |     |     |     |      |     |
  /dev  /etc   /sbin /home /mnt  /tmp   /usr  /var
                                              |
   +--------+--------+--------+-------+-------+-------+
   |        |        |        |       |       |       |
   adm      cron     lp       mail    news    spool   uucp
                                              |
                              +-------+-------+
                              |       |       |
                              lp      uucp    uucppublic


   Oto najprostsza struktura systemu plików Linux [RedHat 4.1]:


                             (root directory)
                                    /
                                    |
     +-----+----+-+----+----+----+--+--+----+-----------+----+----+-----+
     |     |      |    |    |    |     |    |           |    |    |     |
     /dev  /proc  /etc /bin /lib /home /mnt /lost+found /usr /tmp /root /var
                                 |
                        +--------+-----+--(...)--+
                        |        |     |         |
                        httpd    ftp   jasio     other_users
                                 |     |
                                 |     public_html
                                 |
                       +-----+---+--+-----+-----+
                       |     |      |     |     |
                       bin  dev   etc     lib   pub

  UWAGA! Struktury są schematyczne i nie są na nich zaznaczone wszystkie
  katalogi i podkatalogi, to są tylko przykłady!!!

  /
    główny katalog (root directory), podstawa całego drzewa katalogowego.
    W obrębie tego katalogu, znajdują się wszystkie pliki i katalogi,
    niezależnie od ich fizycznego położenia na dysku twardym.
  /dev
    zawiera pliki specjalne dla fizycznych urządzeń (I/O), w niektórych
    systemach, katalog ten podzielony jest na kilka podkatalogów.
    Pliki te obsługują takie urządzenia jak drukarka, twardy dysk,
    cdrom czy karta muzyczna.
  /proc
    niezbędny dla komendy ps
  /etc
    zawiera niezbędne (ale nietylko) pliki konfiguracyjne i administarcyjne
    systemu, katalog może być podzielony na podkatalogi, może też obok
    plików tekstowych zawierać programy wykonywalne, np. skrypty bootujące.
    Ważniejsze pliki tekstowe to min.:
    /etc/passwd
    /etc/group
    /etc/shadow
    itp. itd.
  /bin
    wykonywalne narzędzia systemowe dostępne dla wszystkich użytkowników
    systemu, stanowiące jego integralną część.
  /lib
    biblioteki run-time różnych języków programowania, min.: C/C++
  /home
    katalog domowy, użytkownicy systemu itp. (Linux)
  /u
    katalog domowy, użytkownicy systemu itp. (BSD)
  /mnt
    używany jako punkt do przyłanczania (mounting) np: innego dysku, cdrom'a
    czy też innego systemu plików.
  /lost+found
    katalog używany przez program fsck. Przechowuje się w nim pliki zgubione.
  /usr
    narzędzia i aplikacje (Linux)
    katalog przeznaczony do przechowywania plików pocztowych, poleceń
    użytkowników i innych fragmentów systemu operacyjnego. (BSD)
  /var
    katalog do przechowywania plików pocztowych i innych fragmentów systemu
    operacyjnego (Linux) (System V.4)
  /tmp
    katalog dla plików tymczasowych, dostępny dla wszystkich.
  /root
    katalog własny nadzorcy systemu (Linux)
  /usr/adm
    katalog własny nadzorcy systemu (BSD)
  /var/adm
    katalog własny nadzorcy systemu (System V.4)

II. SEKCJA B : podstawy unix'a
1.  Gdzie jesteśmy?
    Aby okreslić w jakim miejscu na dysku sie znajdujemy, można napisać:

    $ pwd
    /home/jasio
    $

    Dla uzyskania więcej informacji napisz:

    $ man pwd
    

    Tak sprawdzaj każde polecenie ktorego nie znasz! Można jeszcze zamiast
    man, używać polecenia apropos, ale nie na wszystkim maszynach to działa.

    W Unix'ie znak / (slash), spełnia tą sama rolę co w DOS'ie
    znak \ (backslash). W naszym przypadku, osnacza to, ze znajdujemy się
    w katalogu /home/jasio

2.  Jak zobaczyć zawartość katalogu i uprawnienia?
    Napiszmy:

    $ ls
    jedenplik    drugiplik   trzeciplik    katalog1
    katalog2     katalog3    (...)
    $ ls -a
    .login       .profile    jedenplik     katalog1
    (...)
    $ ls -l
    total 5
    drwxr-x---  7 jasio   users   512 Jul 11 22:47 katalog1
    drwxr-xr-x  2 jasio   users   512 Jul 11 02:22 katalog2
    drwxr-x---  5 jasio   users   512 Jul 11 23:11 katalog3
    drwxr-xr-x  9 jasio   users   512 Jul 11 12:30 katalog4
    -rw-r--r--  1 jasio   jasio   159 Dec 22 15:15 jedenplik
    $

    Jak zauważyliśmy, komenda ls jest odpowiednikiem (lepszym;), DOS'owskiej
    komendy dir (w wielu systemach, spokojnie, o ile root pomyślał, można
    zamiast ls, pisac dir). Samo ls wyświetla tylko katalogi i pliki,
    parametr -a pozwala na obejrzenie plików, ukrytych (zaczynajacych sie od
    '.') za to ls -l wyświetla dokładne widomości o plikach i katalogach.
    Pierwszy wiersz wydruku podaje całkowitą objętość dysku zajmowaną przez
    nasze pliki (katalogi) - total 5.
    Kolumna zawierająca liczby:

    512
    512
    512
    512
    159

    Podaje rozmiary danych plików (katalogów) w bajtach.
    Fraza Dec 22 15:15 podaje dokładną datę i czas zmiany pliku (kat.)
    Druga kolumna zawierająca słowo 'jasio' okresla właściciela
    pliku (katalogu), trzecia 'users' określa grupę dostępu do pliku (kat.).
    Pierwsza kolumna dotyczy praw i rodzaju plików (katalogów).
    pierwsza litera 'd' oznacza, że to jest katalog, literka 'l', oznaczałaby
    link symbioliczny do pliku (katalogu), a minus '-', mówi nam, że jest to
    zwykły plik. Następnie określane są przywileje, kolejno po trzy dla
    właściciela, grupy i innych. Literka 'r' oznacza read, czyli możliwość
    czytania, 'w' write, czyli pisanie, 'x' execute, wykonywania (np. aby
    wejść do katalogu, niezbędne jest ustawienie uprawnienia 'r-x')!

    W naszym przypadku wygląda to mniej więcej tak:

    a).

    +-+ +-+-+-+-+-+-+-+-+-+
    |k| |r|w|x|r|w|x|r|w|x|
    +-+ +-+-+-+-+-+-+-+-+-+
     |  \--+--/\--+-/\--+-/
     |     |      |      |
     |     |      |      \uprawnienia dla pozostalych użytkownikow (other)
     |     |      |
     |     |      \uprawnienia dla grupy (group)
     |     |
     |     \uprawnienia dla właściciela (owner)
     |
     \rodzaj kategorii (plik zwykły, plik specjalny, katalog, łącznik,
                        socket, potok.)

    A tak przedstawia się znaczenie bitów w słowie, zawierającym prawa
    dostępu:

    b).

    +-+-+-+ +-+-+-+-+-+-+-+-+-+
    |s|g|t| |r|w|x|r|w|x|r|w|x|
    +-+-+-+ +-+-+-+-+-+-+-+-+-+
    \--+--/ \--+--/\--+-/\--+-/
       |       |      |      |
       |       |      |      \uprawnienia dla pozostałych użytkowników
       |       |      |
       |       |      \uprawnienia dla grupy
       |       |
       |       \uprawnienia dla właściciela
       |
       \uprawnienia specjalne

    Legenda do a). i b).

    r - uprawnienie do odczytania pliku
    w - uprawnienie do zapisania (modyfikacji) pliku
    x - uprawnienia do wykoniania pliku
    k - rodzaj kategorii
        ('-' plik zwykły,
         'd' katalog,
         'l' łącznik symboliczny,
         'b' plik specjalny blokowy,
         'c' plik specjalny znakowy,
         's' socket,
         'p' nazwany potok.)
    s - bit SUID ( ustawienie go powoduje, że dostęp do pliku może
        mieć tylko jeden użytkownik)
    g - bit SGID (ustawienie dla katalogu, powoduje, że pliki tworzone w tym
        katalogu będą należały do tej samej grupy, do której należy katalog,
        a nie do grupy do której należy właściciel pliku)
    t - bit sticky (ustawienie go powoduje, że program po wykonaniu nie
        jest usuwany z pamięci)
    a). Interpretacja uprawnień, wyświetlonych po wydaniu polecenia 'ls -l'
    b). Format informacji zapisanych w węźle, każdej klasy użytkowników.

3.  Uprawnienia plików cd.?
    Uprawnienia dla plików i katalogów ustawiamy za pomocą polecenia 'chmod',
    którego format: chmod who+, -, =r, w, x, gdzie who, może oznaczać:

    u-user  (użytkownik, właściciel)
    g-group (grupa)
    o-other (inni użytkownicy)
    a-all   (wszyscy)

    np.

    chmod g+r plik1
    nadaje grupie, możliwość czytania pliku (kat.) plik1.

    chmod u+x plik2
    nadaje właścicielowi, prawa wykonywania pliku plik2

    chmod o-x plik3
    odbiera pozostałym (other) użytkownikom, prawa do wykonywania pliku plik3

    chmod g=rwx plik4
    nadaje pełne uprawnienia grupie, do której należy właściciel

    chmod ugo-x plik5 lub chmod a-x plik5
    odbiera wszystkim prawa do wykonywania pliku plik5

    Mozna też za pomocą polecenia 'chmod', nadawać uprawnienia w formie
    octalnej np.

    chmod 740 plik1
    nadaje właścicielowi uprwanienia do czytania, pisania i wykonywania pliku,
    grupie tylko to czytania a innym zabiera wszystkie uprawnienia.
    Obliczyć wartość octalną uprawnień jest bardzo łatwo:

    +-+-+-+-+-+-+-+-+-+
    |r|w|x|r|w|x|r|w|x| pełne uprawnienia dla wszystkich
    +-+-+-+-+-+-+-+-+-+
     4+2+1 4+2+1 4+2+1
       7     7     7    czyli chmod 777 plik0

    +-+-+-+-+-+-+-+-+-+
    |r|w|x|r|w|-|-|-|-| pełne uprawnienia dla właściciela, prawo czytania i
    +-+-+-+-+-+-+-+-+-+ pisania dla grupy
     4+2+1 4+2+0 0+0+0
       7     6     0    czyli chmod 760 plik0

    +-+-+-+-+-+-+-+-+-+
    |r|-|-|-|-|-|r|w|-| uprawnienie do czytania dla właściciela oraz prawo do
    +-+-+-+-+-+-+-+-+-+ czytania i pisania dla innych użytkowników
     4+0+0 0+0+0 4+2+0
       4     0     6    czyli chmod 406 plik0

    Polecenie 'chmod' można wykonywać z parametrem '-R' (ang. recursive), np.

    chmod -R 006 gre*
    jeśli gre* natrafi na katalog to wszystkie jego podkatalogi z plikami
    włącznie otrzymają prawo do czytania i pisania tylko dla innych
    użytkowników!

    Poleceniem dosyć ważnym jest jeszcze 'unmask', który precyzuje standardowe
    prawa dostępu dla plików w momencie ich zakładania! Wydanie polecenia:

    unmask

    pokazuje liczbę, zazwyczaj '022', ktora odejmowana jest od pełnego
    zestawu praw, to jest

    +-+-+-+-+-+-+-+-+-+
    |r|w|x|r|w|x|r|w|x| pełne uprawnienia dla wszystkich
    +-+-+-+-+-+-+-+-+-+
     4+2+1 4+2+1 4+2+1
       7     7     7    777 dla katalogów

    i

    +-+-+-+-+-+-+-+-+-+
    |r|w|-|r|w|-|r|w|-| pełne uprawnienia, bez uruchamiania (!) dla wszystkich
    +-+-+-+-+-+-+-+-+-+
     4+2+0 4+2+0 4+2+0
       6     6     6    666 dla plików

   czyli oznacza to, że standardowo będą tworzone pliki z uprawnieniami 644 i
   katalogi z uprawnieniami 755!

   Wydanie polecenia:

   unmask 077

   odbierze wszystkim, poza właścicielem, wszelkie prawa do plików (kat.),
   uwaga, obowiazuje tu artmetyka ósemkowa (octalna)!!!

4. Co to są grupy?
   Pora teraz zająć sie grupami, co to jest i jak to sie je?
   Po wydaniu polecenia 'ls -l', otrzymaliśmy wynik:

      [...]
   1  drwxr-xr-x  9 jasio   users   512 Jul 11 12:30 katalog4
   2  -rw-rw-r--  1 jasio   jasio   159 Dec 22 15:15 jedenplik
      [...]

   Wiemy już, że 'jasio' jest właścicielem, ale w (2), 'jasio', jest
   tez oznaczony jako grupa, co to oznacza? Po prostu, grupą w tym przypadku
   jest tylko 'jasio' czyli tak naprawdę nie ma żadnych grup ;-), w
   przypadku (1), grupa 'users' to najczęściej użytkownicy systemu, czyli np:
   users to jasio, halinka, basia, asia itp.

   Oto przykładowa definicja pliku /etc/group

   # cat /etc/group
   root::0:root
   bin::1:root,bin,daemon
   daemon::2:root,bin,daemon
   sys::3:root,bin,adm
   adm::4:root,adm,daemon
   tty::5:
   disk::6:root
   lp::7:daemon,lp
   mem::8:
   kmem::9:
   wheel::10:root
   mail::12:mail
   news::13:news
   uucp::14:uucp
   man::15:
   games::20:
   gopher::30:
   dip::40:
   ftp::50:
   nobody::99:
   users::100:jasio,halinka,basia,asia
   jasio::500:jasio
   halinka::501:halinka
   [...]
   #

   czyli:

   name:password:gid:login

   name      - nazwa grupy
   password  - hasło (najczęściej puste, czyli ::)
   gid (GID) - Group Id (identyfikator grupy)
   login     - login

5. Jak się szybko poruszać po systemie plików?
   Teraz musimy się nauczyć szybkiego poruszania po Unix'ie, poznalismy
   już polecenie 'ls', czas teraz na nastepne:

   cd    - zmienia katalog (ang. change directory)
   np.:
   cd ..        - przejdziemy do wyższego katalogu (rodzica)
   cd katalog1  - wejdziemy do katalogu 'katalog1'
   cd /etc/rc.d - wejdziemy do katalogu '/etc/rc.d'
   cd /         - wejdziemy do głównego (root) katalogu!

   pwd   - podaje bierzący katalog (patrz. II.1.)

   mkdir - tworzy katalog
   np.:
   mkdir lala        - tworzy katalog 'lala'
   mkdir k1/k2       - tworzy katalog 'k2' w katalogu 'k1' (jesli trzeba to
                       tworzy katalog 'k1')
   mkdir -p k1/k2/k3 - tworzy po kolei 'k1', 'k2', 'k3' w sobie
                       (konieczny parametr -p 'parent')
   mkdir k1 k2 k3    - tworzy katalogi w bierzącym katalogu :-)

   rmdir - usuwa katalog (musi byc pusty!)
   np.:
   rmdir k1       - usuwa katalog 'k1'
   rmdir k1 k2 k3 - usuwa katalogi

   cp - kopiowanie plików
   np.:
   cp p1 p2    - kopiuje plik 'p1' do pliku 'p2'
   cp p1 /etc  - kopiuje plik 'p1' do katalogu '/etc'
   cp -i p1 p2 - kopiuje plik 'p1' do pliku 'p2' ale jeśli plik 'p2' istnieje
                 pyta sie czy go zamazać
   cp -r k1 k2 - kopijuje katalog 'k1' i automatycznie tworzy katalog 'k2'

   mv - przenoszenie i zmiana nazwy plików
   np.:
   mv p1 p2    - zmienia nazwę z 'p1' na 'p2'
   mv p1 /etc  - przenosi plik 'p1' do katalogu '/etc'
   mv -i p1 p2 - przenosi plik 'p1' do pliku 'p2' ale jeśli plik 'p2'
                 istnieje pyta się czy go zamazać.

   rm - usuwa plik
   np.:
   rm p1     - usuwa plik 'p1'
   rm -i p1  - pyta sie czy usunąć i po potwierdzeniu usuwa
   rm -r k1  - usuwa katalog, wszystkie pliki i podkatalogi!!!

   cat - wypisuje zawartość pliku na standardowe wyjście (ekran, plik ...)
   np.:
   cat p1    - wyświetla zawartość pliku 'p1'
   cat > p1  - pozwala zapisać tekst do pliku 'p1' po naciśnięciu Ctrl-D

   Obok polecenia 'cat', możemy użyć jeszcze 'more' czy 'less', ktore są
   dostępne w niektórych instalacjach Unix'a, np. Linux'a ;-)

   joe, ed, vi - proste edytorki tekstowe

6. Co to są dżokery?
   Zadasz może pytanie, jak zachaczyć większe grupy plików (kat.) np. przy
   kopiowaniu, przecież nie będziesz samemu sam wszystkiego wpisywał, nie?

   Tak więc piszemy znak:

   *

   obejmuje wszystkie zwykłe pliki w bierzącym katalogu

   np. p1 p2 p3 p4 k1 k2 k3 k4 itd.

   nie obejmuje natomiast plików ukrytych, czyli tych zaczynających się od
   kropki (kropek) np. .ps1 .ps2 .ks1 .ks2 ... .. ...ps6 ........k8 itd.

   Pliki te obejrzymy pisząc:

   .*

   Pisząc:

   Agna*La*

   dostaniemy np. Agna123sddddLa33fdff, czy Agna233La000

   Znakiem:

   ?

   zastepujemy, dokładnie jeden znak ;-) np.

   A?a

   może oznaczać Ala A9a Aaa AAa itd., a A???a może znaczyć A123a itd...

   Pisząc:

   [123]a

   otrzymamy: 1a 2a lub 3a, zamiast [123]a, możemy napisać [1-3]a, co
   oznacza dokładnie to samo! ([a-z], [A-Z], [A-Za-z0-9] itd).

   możemy jeszcze użyć:

   test.{exe,obj,out,o,exe}

   Pasuje do: test.exe test.obj test.out test.o i test.exe

   Oczywiście możemy kombinować, np:

   Linu?-[0-9]*-[abcde0-9]???{exe,out,tar,gz}.*[QWEhj35]

   też ma, zawiły bo zawiły, ale zawsze jakiś sens ;-)

7. Jakie są dżokery specjalne?
   Inne znaki (dżokery) specjalne:

   &  - uruchamianie procesu w tle
        np.:
        playmidi muzyka.mid &
   >  - kieruje na wyjście (standard out)
        np.:
        echo "To jest tekst" > p1
   1> - dokładnie to samo co poprzednie, kieruje na wyjście
        (standard out)
        np.:
        echo "To jests tekst" 1> p1
   2> - kieruje błędy na wyjście (standard error)
        np.:
        ls olo23 2> plik.z.bledami
   <  - kieruje na wejście zawartość pliku (standard in)
        np.:
        sort < p1
   >> - kieruje na wyjście i np. dołancza do końca pliku
        np.:
        echo "Pierszy wiersz" > p1
        echo "Drugi wiersz" >> p1
   >& - zmienia kierunek strumieni standard out i standard error
        np.:
        ls olo23 >& plik.z.bledami
   |  - kieruje wynik programu do innego na wejście (wyjście na wejście)
        (standard out => standard in)
        np.:
        ls -Fla | more
   |& - kieruje na standard out także strumień z błędami
        (wyjście+wyjście z błędami na wejście)
        (standard out+standard error => standard in)
        np.:
        cat niemamnie |& more

   Oczywiscie możemy wszystko kombinować ze sobą np:

   sort < plik.nie.posortowany >> plik.jest.posortowany
   lub
   (ls niemamnie > info.plik) >& error.error.error

8. Co to są polecenia procesowe?
   Do obsługi procesów (uruchomionych programów) i zadań (wiele procesów),
   bardzo użytecznym programem jest 'ps'
   (ang. proces status)
   Jeśli wywołamy go bez żadnych parametrów, naszym oczą ukarze się:

   $ ps
   PID TTY STAT  TIME COMMAND
   282   1 S    0:02 /bin/login -- root
   285   4 S    0:00 (mingetty)
   286   5 S    0:00 (mingetty)
   287   6 S    0:00 (mingetty)
   301   1 S    0:01 (bash)
   399   1 R    0:00 ps
   $

   po wydaniu polecenia 'ps -aux', gdzie parametry oznaczają
    a - wszystkie procesy (all)
    x - dodanie procesów nie kontrolowanych przez terminal (ang. deteched)
    u - identyfikacja użytkowników (users)

   $ ps -aux
   USER    PID %CPU %MEM  SIZE   RSS TTY STAT START   TIME COMMAND
   bin      95  0.0  0.6   896    44  ?  S   20:32   0:00 (portmap)
   news    296  0.0  7.9  1580   516  ?  S   20:33   0:00 /sbin/innd -p5 -r
   news    300  0.0  0.3   872    24  ?  S   20:33   0:00 (overchan)
   jasio   283  0.1 11.0  1012   716   2 S   20:33   0:01 /bin/login -- jasio
   jasio   344  0.1 10.1  1220   656   2 S   20:38   0:01 -bash
   asia    358  0.2 10.7  1012   700   3 S   20:39   0:01 /bin/login -- asia
   asia    359  0.1  9.7  1216   632   3 S   20:39   0:00 -bash
   root      1  0.3  1.6   880   104  ?  S   20:30   0:04 init
   [...]
   root    465  0.0  6.2   928   404   1 R   20:53   0:00 ps -aux
   $

   USER    - użytkownik procesu
   PID     - numer identyfikacyjny procesu
   TTY     - procesy związane z naszym terminalem
   STAT    - status procesu
             R - proces działający (ang. running)
             T - proces zatrzymany (ang. stopped)
             P - proces w stanie spoczynku (ang. page wait)
             D - proces w stanie spoczynku (ang. disk wait)
             S - proces w stanie spoczynku (ang. sleeping)
             I - proces w stanie spoczynku (ang. idle)
             Z - proces duch (ang. zombie), zakończył się ale nie rozliczył
                 sie jeszcze z procesami nadrzędnymi!
   TIME    - jak długo działa proces
   COMMAND - nazwa programu, której odpowiada proces
   %CPU    - ilość zaangażowania procesora w procesie
   %MEM    - jaką część pamięci operacyjnej zajmuje proces
   START   - czas startu procesu

   Oczywiście jest to _prawdziwy_ system operacyjny, a nie jakiś windows, czy
   inne gówno, tak więc każdy proces, możemy zabić poleceniem:

   $ kill [-signal] [PID]

   gdzie najsłapszym sygnałem jest ten oznaczony przez -1 a najmocniejszym -9
   czyli sygnały numerowane są od -1 do -9.   

   np.

   $ kill 200
   200 terminated
   $

   a jesli proces jest oporny i nie chce dać się ubić, napisz

   $ kill -9 [PID]

   mało, który to przeżyje ;-)

   Aby zabić równocześnie wszystkie procesy, warto napisać:

   $ kill -9 -1

   Acha, jesli jesteś samobójcą napisz

   $ kill -9 0

   Hieee, ha, ha ;->

   Można też używać polecenia killall, o składni: 

   $ killall bash

   zabije wszystkie procesy związane z zadaniem bash (występuje słowo bash).

   Dowolny proces możemy w dowolnym momencie zatrzymać lub przerwać. Do
   zatrzymania procesu wystarczy kombinacja klawiszy Ctrl+z, oczywiście
   tak zatrzymany proces możemy powtórnie "kontynułować". Aby przerwać
   stosujemy kombinację klawiszy Ctrl+c.

   Do obsługiwania zadań, posiadamy jeszcze komendy

   jobs        - wyświetla zadania aktywne ([JOB] to numer zadania)

   np.

   $ jobs
   [1]-  Stopped (tty output)    man tar
   [2]+  Stopped                 man gzip
   [3]+  Running                 find / -name "*.txt" &
   $

   gdzie, pierwsza kolumna to numer zadania (JOB), plus lub minus oznacza
   aktywne(+) lub nieaktywne(-) zadanie, trzecia kolumna omawia bierzący
   stan zadania (Stopped - zatrzymane, Running - w toku), czwarta oznacza,
   gdzie znajduje sie wyjście zadania, a piąta, wykonywane polecenie.

   bg %[JOB]    - uruchamia zawieszone zadanie [JOB], w tle
   fg %[JOB]    - uruchamia zawieszone zadanie [JOB], w pierwszym planie
   kill %[JOB] - przerywa zadanie [JOB]

   Obok tu stosowanych metod zarządzania procesami, alternatywną i wygodną
   metodą jest praca z programem screen (/usr/bin/screen), program ten 
   pozwala na pracę na kilku konsolach jednocześnie oraz pozwala na 
   pozostawienie działających procesów po wylogowaniu!
   Program uruchamiamu pisząc:

   $ screen
   
   lub
   
   $ /usr/bin/screen

   teraz możemy rozpoczynać procesy. 
   Kombinacja klawiszy Ctrl+a+d pozwala na zakończenie sesji screen'a.
   Ponowne uruchomienie screen'a (np. po ponownym zalogowaniu się) przez:

   $ screen -r
   
   pokazuje aktywne procesy (screen'y) i ich PID'y. Pisząc:

   $ screen -r PID

   przechodzimy (powracamy) do danego procesu.
   Parametr:

   $ screen -x 

   Pozwala zakończyć "uszkodzoną" sesję screen, a parametr -wipe, usuwa z
   pamięci i dysku informację o procesach za'screen'owanych (oczywiście 
   tych uszkodzonych). Cały czas w czasie działania screen'a aktywne są
   kombinacje klawiszy:
   
   Ctrl+a+d      - zakończenie sesji z screen'em, można też napisać
                   exit lub logout
   Ctrl+a+c      - dodanie dodatkowego ekranu (dla procesu)
   Ctrl+a+spacja - przełączenie na następny ekran
   Ctrl+a+a      - przełączenie na poprzedni ekran
   Ctrl+a+0..9   - wybór ekranu o numerze od 0 do 9 (max. 10)

9. Polecenie "su".
   W Unix'ie możemy otwierać kilka równoczesnych sesji, aby to zrobić
   nie przerywając poprzedniej sesji, piszemy:

   $ su -[user]

   gdzie, [user] to identyfikator użytkownika, potem podajemy hasło i sesja
   jest już otwarta.

10.Jak spakować dane?
   W miare wygodnie jest rozwiązane pakowanie i archiwizacja danych w
   systemach Unix'owych. Najczęściej używanymi do tego programami są
   archiwizator 'tar' (ten program TYLKO! archiwizuje NIE! kompresuje) oraz
   kompresory (bardzo często używane razem z 'tar'em), 'gzip' i 'compress'.
   Ostatnio coraz cześciej można spotkać, znane ze środowiska DOS i nie
   tylko kompresory 'arj', 'rar' oraz 'lharc'.
   Polecenia:

   $ tar -cvf  pliki

   Tworzy archiwum z rozszerzeniem 'skompresowany_plik.tar'
   (UWAGA! Takie archiwum wypada skompresowac, np. za pomocą 'gzip'a
   lub 'compress'a).

   $ tar -xvf 

   Rozarchiwizowuje plik 'zarchiwizowany_plik.tar'.
   Poleceniem:

   $ tar -tf 

   Przeglądamy archiwum 'zarchiwizowany_plik.tar'.

   $ gzip 

   Kompresujemy plik 'plik', wynikiem jest powstanie pliku 'plik.gz',
   a po wydaniu:

   $ compress 

   Kompresujemy plik 'plik', wynikiem jest powstanie pliku 'plik.Z'.
   Tak skompresowane pliki rozpakowujemy:

   $ gzip -d 

   lub

   $ compress -d 

   Najczęściej w Unix'ach stosujemy rozszerzenia *.tar.gz lub *.tgz,
   które powstają po archiwizacji programem 'tar' i kompresji
   programem 'gzip'.

   Rozkompresowujemy poleceniem:

   $ tar -zxvf 

   Najczęściej stosowane opcje:

   v - wypisuje komentarze na temat przetwarzania pliku (ang. verbose)
   c - zakładanie nowego archiwum (ang. create)
   t - wypisywanie zawartości pliku arch. (ang. table of contents)
   u - dodawanie nowych plików do arch. (ang. update)
   x - odkompresowywanie plików (ang. extract)
   z - arch. typu gzip

11.Ile miejsca na dysku?
   Warto też znać jak sprawdzić ilość wolnego miejsca na dysk(u/ach).
   Piszemy 'df' (ang. disk free)

   $ df
   Filesystem         1024-blocks  Used Available Capacity Mounted on
   /dev/hda2             326885  237977    72024     77%   /
   /dev/hda1             269960  243432    26528     90%   /mnt/hdd

   gdzie:

   Filesystem  - nazwa danego systemu plikowego
   1024-blocks - ilosc wolnych 1024-bloków (kb) [kbytes]
   Used        - ilosc używanych 1024-bloków (kb) [used]
   Available   - ilość wolnych 1024-bloków (kb) [avail]
   Capacity    - ile procent systemu plików jest zajmowany [capacity]
   Mounted on  - gdzie dany system plików jest podpięty (patrz dalej)

   Drugim użytecznym poleceniem, jest polecenie 'du' (ang. disk usage),
   ktore pokazuje ilość miejsca (kb), zajmowanego przez pliki w danym
   katalogu oraz we wszystkich podkatalogach. A jako ostatnia wyświetlona
   liczbę, podaje łączną objętość wszystkich plików w tych katalogach.
   Np.

   $ du
   13	./.xfm
   26	./scripts/irc
   27	./scripts
   1	./mail
   1208	./tst
   6	./hack
   30	./tst2
   1323	.
   $

   PS.

   Pamieć w systemie Linux możemy skontrolować pisząc np.

   $ cat /proc/meminfo
           total:    used:    free:  shared: buffers:  cached:
   Mem:   6643712  6533120   110592  4706304   372736  1679360
   Swap: 17543168   204800 17338368
   MemTotal:      6488 kB
   MemFree:        108 kB
   MemShared:     4596 kB
   Buffers:        364 kB
   Cached:        1640 kB
   SwapTotal:    17132 kB
   SwapFree:     16932 kB
   $

   Co poinformuje nas o używanych zasobach (pamieci, swapu itd.)

12.Jak przygotować własny system plików?
   Jeżeli chcemy użyc dyskietki, to musimy ją najpierw sformatować:

   # fdformat /dev/fd0H1440

   formatuje dyskietkę w napędzie 3.5" na 1.44MB, a następnie utworzyć
   system plików:

   # mkfs -t ext2 -c /dev/fd0H1440

   tworzy system plików dla Linux'a (ext2), a

   # mformat a:

   tworzy system plików, typu dosowskiego (FAT).

   Aby skopiować coś na te dyskietki piszemy:

   # dd if=file_name of=devie_name

   lub

   # cp file_name device_name

   gdzie,

   file_name   - plik(i) do skopiowania (nazwa urządzenia)
   device_name - nazwa urządzenia na ktore kopiujemy (np. /dev/fd0)

   Czyli np. kopiowanie pliku /etc/passwd na dyskietkę w systemie dos,
   może np. wyglądać tak:

   1) # fdformat /dev/fd0H1440
   2) # mkfs -t msdos -c /dev/fd0H1440 lub # mformat a:
   3) # mount -t msdos /dev/fd0 /mnt
   4) # cp /etc/passwd /mnt
   5) # umount /mnt

   Oczywiście dyskietkę dos'owska możemy przygotować wcześniej w dos'ie,
   wtedy to operacja skróci się tylko do punktów 3), 4) i 5).
   O mountowaniu i wymountowywaniu pisze dalej...

   Różne Unix'y maja zainterpretowane różne systemy plików i tak np. Linux
   posiada (cat /proc/filesystem):

   ext
   ext2     - Linux
   xiafs
   minix    - Minix
   umsdos
   msdos    - DOS
   nfs      - Network File System
   proc
   smbfs
   iso9660  - CD-ROM
   oraz jeszcze kilka innych...

   Aby użyć np. dyskietke czy CD-ROM, a nawet inna partycje z np. DOS'em
   trzeba ja najpierw zamountować (polecenie 'mount'), a po zakonczonej
   pracy wymountować (polecenie 'umount'). Acha, trzeba pamiętać, że te
   polecenie może wydawać tylko root.

   I tak aby to robic automatycznie i półautomatycznie, w niektórych
   Unix'ach (Linux etc.) stosuje sie plik /etc/fstab

   # cat /etc/fstab
   /dev/hda2            /                       ext2    defaults        1 1
   /dev/hda3            swap                    swap    defaults        0 0
   /dev/fd0             /mnt/fda                msdos   noauto          0 0
   /dev/fd1             /mnt/fdb                msdos   noauto          0 0
   /dev/hdb             /mnt/cdrom              iso9660 noauto          0 0
   /dev/hda1            /mnt/hdd                msdos   defaults        0 0
   none                 /proc                   proc    defaults        0 0
   #

   gdzie,
   pierwsza kolumna - urzadzenie (system plików)
   druga kolumna    - gdzie bedzie dostępne urządzenie
   trzecia kolumna  - rodzaj systemu plików
   czwarta kolumna  - parametry (np. auto, noauto, defaults, [user])
   piąta kolumna    - odnosi sie do programu dump
   szósta kolumna   - odnosi sie do programu fsck (1 - sprawdzać file system
                      przy boot'owaniu 0 - nie sprawdzać)

   teraz wystarczy napisać tylko (po nowym starcie systemu):

   # mount
   /dev/hda2 on / type ext2 (rw)
   /dev/hda1 on /mnt/hdd type msdos (rw)
   none on /proc type proc (rw)
   #

   i już wiemy co i jak (rw - read/write ro - read only), główny katalog
   mamy zamountowany w '/', a w katalogu /mnt/hdd, mamy partycje dos'owską.
   Teraz aby zamountować cdrom, wystarczy napisać:

   # mount /mnt/cdrom

   a wymountowć

   # umount /mnt/cdrom

   Jeśli zaś nie mamy pliku /etc/fstab, musimy napisać

   # mount -t iso9660 /dev/hdb /mnt/cdrom

   i/lub

   # mount -t msdos /dev/hda1 /mnt/hdd

   aby zamountować partycje dosowską. Aby wymountować wystarczy napisać

   # umount /mnt/hdd

   Ogólnie mountujemy pisząc:

   # mount -opcje filesystem urządzenie podczepić_pod_katalog

   Trzeba pamietać, aby przed zamountowaniem, w np. CD-ROM'ie obecny był CD!

   Acha, troche o urządzeniach:

   /dev/hda      - oznacza pierwszy dysk twardy (IDE/EIDE)
   /dev/hda1     - pierwsza partycje na pierwszym dysku twardym
   /dev/hda2     - drugi...
   /dev/hdb      - drugi dysk twardy lub cd-rom
   /dev/sda      - pierwszy dysk wardy (SCSI)
   /dev/sda1     - pierwsza partycja na pierwszym dysku twardym
   /dev/sdb      - drugi...
   /dev/fd0      - pierwsza stacja dysków elastycznych
   /dev/fd0H1440 - dyskietka 3.5" 1.44MB
   /dev/fd0H1200 - dyskietka 5.25" 1.20MB
   /dev/fd1      - druga stacja dysków elastycznych
   /dev/cua0     - COM1
   /dev/cua1     - COM2
   /dev/lp0      - LPT1
   /dev/lp1      - LPT2
   /dev/null     - urządzenie puste
   /dev/swap     - urządzenie swap
   /dev/...      - itd.

13.Co to są aliasy?
   Aliasy, czyli przypisanie komendy skrótowi,też się przydają, pisząc np.

   $ alias skrót=`polecenie -opcje`

   np.

   $ alias dir=`ls -Fla`
   $ alias copy=`cp $1 $2`

   to bylo dla bash'a

   $ alias skrót "polecenie -opcje"

   np.

   $ alias dir "ls -Fla"
   $ alias copy "cp $1 $2"

   to bylo dla tcsh'a.

14.Jak się ze sobą porozumiewać?
   Czasami chcemy sie zorientować z kim jednocześnie jesteśmy w systemie,
   piszemy:

   $ users
   root halinka asia
   $

   I otrzymamy identyfikatory pracujących użytkowników, ale aby wiedzieć
   więcej napiszmy:

   $ who
   root     tty1     Jan 27 20:33
   halinka  tty2     Jan 27 20:38
   asia     tty3     Jan 27 20:39
   $

   pierwszy rząd to login użytkownika, drugi to jego (usera) terminal, a
   trzeci i ostatni to dokładna data i czas zalogowania. Zaś jeśli napiszemy:

   $ whoami
   root
   $

   Otrzymamy identyfikator bierzacego użytkownika, piszac zaś:

   $ who am i
   alpha!root  ttyp1  Jan 27 20:33
   $

   Otrzymamy to co powyżej, z informacja o nazwie komputera, typu terminala i
   dacie i czasie rozpoczecia pracy.

   możemy tez napisać:

   $ w
     8:43pm  up 13 min,  3 users,  load average: 0.07, 0.20, 0.20
   USER     TTY      FROM              LOGIN@  IDLE   JCPU   PCPU  WHAT
   root     tty1                       8:33pm  1.00s 11.62s  0.75s  w
   halinka  tty2                       8:38pm 42.00s  3.25s  1.32s  -bash
   asia     tty3                       8:39pm  4:25   2.87s  0.91s  -bash
   $

   I wiemy trochę więcej...

   8:43pm       - bieżąca godzina (20:43)
   up 13 min    - jak długo pracuje nasz system (13min)
   3 users      - ilu użytkownikow pracuje
   load average - obciążenie systemu przez programy
   USER         - identyfikator użytkownika [User]
   TTY          - nazwa terminalu [tty]
   FROM         - informacja dodatkowa []
   LOGIN@       - godzina zalogowania [login@]
   IDLE         - ile czasu upłyneło od ost. naciśniecia klawisza [idle]
   JCPU         - czas zużyty przez wszystkie programy na danym terminalu
   PCPU         - oraz przez wszystkie programy w danym momencie
   WHAT         - nazwa aktywnego procesu [what]

   Bardzo często używane jest tez polecenie

   $ finger
   LOGIN  NAME  TTY    IDLE   WHEN       WHERE
   root   root  ttyp1  1.01s  Jan 20:33  Unknow
   $

   Dodatkowo dostajemy informacje, gdzie znajduje sie miejsce pracy
   użytkownika. możemy tez dokładniej dowiedzieć się więcej o danym
   użytkowniku np.

   $ finger root@alpha.center.net
   Login name: root           In real life: root
   Directory: /root           Shell: /bin/bash
   On since Jan 27 20:33:11 on ttyp1 at Unknow
   No unread mail
   No Plan.
   $

   Jak widać dowiadujemy się, jakie są prawdziwe personalia użytkownika
   (In real life), nazwy jego kartoteki prywatnej (Directory),
   rodzaj shell'a (Shell), kiedy sie zalogował (On since), lub kiedy ostatnio
   był w sieci (Last login), czy dostał/czytał ostatnią paczkę poczty i kiedy
   oraz wyświetla jeśli jest plik .plan (.project) użytkownika (No Plan).
   Polecenie możemy jeszcze wywoływać:

   $ finger root
   $ finger @alpha.center.net
   $ finger gutek@194.102.102.7
   $ finger @194.241.101.38

   itp.

   Do porozumiewania sie z innymi użytkownikami, używamy:

   mesg y|n           - zezwolenie lub nie na przyjmowanie komunikatów
   write login [tty?] - wysłanie komunikatu do login, u osoby do której
                        wyślemy pojawi sie tekst:
                        Message from alpha!root on tty1 at 23:33 i wiadomosc
   talk login[@adres] - możemy nawiazac interaktywny kontakt nie tylko z
                        osobą z naszego komputera, ale też innego z sieci.
                        Możliwe komunikaty:
                        No connect yet - brak połączenia
                        Waiting for your party to respond - czekanie na odp.
                        Your party is not logged on - brak partnera w sieci
                        Ringing your party again - ponowne wezwanie
                        Connection established - nawiązano połączenie
                        po stronie adresata pojawi się zaś
                        Message from Talk_Daemon@kom.net at 23:33
                        talk: connection requested by root@kom.net
                        talk: respond with: talk root@kom.net
                        Czyli jeśli adresat po odczytaniu tego napisze
                        talk root@kom.net, to połączenie zostanie nawiązane
   wall [plik.txt]    - wysłanie tekstu do wszystkich użytkowników
   rwall [plik.txt]   - wysłanie tekstu do wszystkich w sieci
   ruser [system]     - wyświetla użytkowników pracujących w [systemach]

III. SEKCJA C : sieć
1. Co to jest URL?
   URL (Uniform Resource Locator), ustala położenie sieciowe, plików,
   katalogów, zapytań, rezultaty wywołań komend, dzwięków itp. itd.
   I tak, URL wskazujący na plik, ma postać:
   file://host.domena[/ścieżka/][plik]
   np:
   file://127.0.0.1/plik.zip

   URL wskazujący na FTP, ma postać:
   ftp://host.domena[/scieżka/][plik]
   np:
   ftp://127.0.0.1/
   Aby zalogować się na konto (=! anonymous), pokryte hasłem piszemy:
   ftp://passwd:login@host.domena[/scieżka/][plik]
   np:
   ftp://de3fk:anika@127.0.0.1/

   URL wskazujący na news'y, ma postać:
   news:[//host.domena[/ścieżka/]]xxx.yyyyy
   np:
   news:alt.2600

   Uwaga!
   Trzeba pamiętać, o zdefiniowaniu zmiennej środowiskowej NNTPSERVER!

   URL wskazujący na artykuły Gopher'a, ma postać:
   gopher://host.domena[:port][/ścieżka]
   np:
   gopher://gopher.ae.poz.edu.pl:70/

   URL związany z HTTP (HyperText  Transport  Protocol), ma postać:
   http://host.domena[:port][/ścieżka/plik[#etykieta]]
   np:
   http://www.tande.com/arexus

   URL wskazujący na serwer:
   telnet://host.domena[:port]

2. Co to jest FTP?
   Jeśli zastanawiasz się w jaki sposób przesyłać pliki w ogólno światowej
   sieci internet, to mam dla Ciebie przygotowaną odpowiedz, do tego celu
   służy (bardzo często), program FTP (File Transfer Protocol)!
   Jeśli chcesz "zassać" pliki z jakiegoś komputera, musisz koniecznie
   znać jego nazwę lub numer w sieci, oraz mieć na nim założone konto
   chronione hasłem.
   Na szczęście InterNet ofiwarowuje nam bardzo dużo, tak zwanych,
   anonimowych kont (Anonymous FTP), z których bez ograniczeń (z wyjątkami,
   z wyjątkami;-), możemy "zassysać" pliki (uwaga znajdziemy sie wtedy w
   kartotece specjalnie to tego przeznaczonej, najczęściej /home/ftp/ lub
   /usr/ftp (albo podobnej), która nam będzie się pokazywała jako "/", ale to
   NIE JEST root directory!!!).
   Acha, jeśli logujemy się na konto typu anonimowego, jako login wpisujemy
   anonymous lub guest, a zamiast hasła podajemy swój adres pocztowy -
   przynajmniej należy to do dobrego tonu, choć nie polecam tego hackerom,
   możemy podawać jako hasło np. gucio@elb.pas.edu.pl lub też tylko gucio@.
   Komende ftp, możemy wywołać z parametrami:
   -d (włącza sledzenie)
   -g (wyłącza rozszerzenia nazw plików)
   -i (wyłącza zapytania)
   -n (wyłącza auto-login) dotyczy to pliku ~/.netrc
       gdzie: machine name (nazwa maszyny)
              login name   (identyfikator)
              password str (hasło)
              account str  (dodatkowe hasło)
              macdef name  (makrodefinicja)
   -v (wyświetla komunikaty)

   Łączymy sie na przykład:

   $ ftp adres.jakiegoś.komputera.pl

   lub

   $ ftp
   ftp> open adres.jakiegoś.komputera.pl

   a dalej

   Connected to adres.jakiegoś.komputera.pl
   220 jakiś.komputer FTP server (UNIX x.x) ready.
   Name (adres.jakiegoś.komputera.pl:gucio): anonymous (lub guest)
   331 Guest login ok, send ident at password.
   Password: gucio@ (tego nie widać, ale to zależy)
   230 Guest login ok, acces restrictions apply.
   ftp> bin
   200 Type set to I.
   ftp>

   I teraz używamy sobie stosując komendy, wiekszość o podobnej składnii, jak
   omówione wcześniej (II.2 & II.5).

   Uwaga, w niektórych komendach można zastosować "!", który okresla komputer
   lokalny (wywołana zostaje lokalna powłoka),
   np. !cd - zmieni katalog (lokalny)

   ls    - wydruk zawartości katalogu (zdalnego) wraz z uprawnieniami (dir).
   cd    - zmiana katalogu (zdalnego).
   cdup  - zmiana katalogu (zdalnego) na nadrzędny.
   pwd   - podaje nazwę katalogu (zdalnego).
   lcd   - podaje nazwę katalogu (lokalnego).
   dir   - wyświetla katalog (zdalny) i ewentualnie zapisuje do pliku
           (lokalnego).
           Składnia: dir [katalog_zdalny] [plik_lokalny]
   get   - pobiera plik z komputera (zdalnego) i zapisuje na lokalnym,
           ewentualnie zmienia nazwę pliku na inną.
           Składnia: get plik_zdalny [plik_lokalny]
   mget  - pobiera jeden lub wiecej plików z komputera (zdalnego) i zapisuje
           na komputerze lokalnym. Mozna stosować maski!
           Skladnia: mget *2.0.{29,30,31}*t[ag][rz]*
                     mget *.txt
   put   - umieszcza jeden plik z komputera (lokalnego) i kładzie na komputer
           zdalny, ewentualnie zmieniajac jego nazwę.
           Skałdnia: put plik_lokalny [plik_zdalny]
   mput  - umieszcza jeden lub wiece plików z komputera (lokalnego) na
           komputer zdalny.
           Składnia: mput *.tgz
   asc   - zmienia (ascii) tryb transferu na ascii (przesyłanie TYLKO tekstu)
           Jeśli prześlesz w tym trybie binaria to są już zniszczone!!!!
   bin   - zmienia (binary) tryb transferu na binarny (przsyłanie wszystkiego
           bardzo ważne)!

   Oraz inne komendy programu FTP (na platformach UNIX):

   !             - wywołuje lokalna powłokę.
                   Składnia: ![komenda_lokalnego_shella [arg]]
   $makro [arg]  - wykonuje makro, które jest zdefiniowane komenda macdef.
   account [pas] - podaje dodatkowe hasło.
   append l [z]  - dołancza zbiór lokalny (l) do zbioru na odleglym komp.
   bell          - uaktywnia informowanie dźwiękowe.
   bye, quit     - konczy sesję ftp (jeszcze close & disconnect).
   case          - przełącza małe litery na duże.
   chmod up pl   - zmienia uprawnienia pliku.
   cr            - rodzaj traktowania znacznika konca linii.
   delete        - uzuwa plik zdalny.
   debug         - przełancza tryb sledzenia.
   form format   - ustala rodzaj formatu transferu.
   glob          - ...
   hash          - przełacza wyświetlanie znaku "#" po 1024 bajtach.
   help [komend] - pomoc.
   idle [sek]    - ustawia timer nieaktywności na serwerze
                   na [sekundy], jeśli nie podamy parametru
		   to komenda wypisze obecny stan timera,
		   timer ten określa, po ilu sekundach
		   nieaktywnosci zakończyć połączenie.
   newer pl      - pobiera plik z serwera, o ile ten plik jest nowszy niż
                   ten, ktory my posiadamy na komputerze lokalnym.
   nlist [d] [l] - działa tak samo jak ls.
   nmap [in out] - konwertuje nazwy plików z in na out - przydatne przy
                   transferowaniu plikow miedzy roznymi systemami, "Kawałki"
                   wzorów oznacza się przez  kolejne symbole $,
                   np.: nmap $1.$2 $2.$1, mam np. plik asd.xyz i $1 teraz
                   oznacza "asd", a $2 "xyz", czyli plik "asd.xyz" zmieni się
                   w "xyz.asd", jeszcze jedna rzecz: można używać w out takiej
                   składni jak np.: [seq1,seq2], oznacza to, że w wypadku,
                   gdy seq1 kończy się zerem, to do przekształcania, wybraną
	 	   będzie sekwencja seq2, np: nmap $1.$2 [$2,$1], spowoduje
                   to przekształcenie pliku (dalej niech przykładem bedzie
                   "asd.xyz") na "asd" - bo seq1 (czyli $2) jest zakonczony 0
		   ($2 to "xyz"), oczywiście w wypadku, gdy seq1 nie kończy
                   się zerem, to ona (seq1) jest podstawiana, jeszcze jedno,
                   jeśli chcemy użyć znaku '$' jako elementu wzoru
                   (a nie zmiennej), to musimy go poprzedzić '\' - czyli "\$".
                   [Opis tej instrukcji przepisałem z ftp.txt, autor nieznany]
   ntrans [i [o]]- tłumaczy znaki w nazwach plików z i na o podczas
                   wykonywania komend put, mput, get oraz mget.
   macdef nazwa  - definiuje makrodefinicje, linia pusta kończy makro.
   mdelete       - usuwa zdalne pliki zgodne z maską.
   mdir z l      - wiele katalogów zdalnych w jednym pliku lokalnym. (mls)
   mkdir         - tworzy katalog zdalny.
   mls z l       - wiele katalogów zdalnych w jednym pliku lokalnym.
   mode [tryb]   - ustala tryb transferu.
   modtime pl    - podaje czas ostatniej modyfikacji pliku z serwera.
   open kom [pr] - nawiązuje połączenie z hostem (kom), przez port (pr).
   prompt        - wyłancza potwierdzenie.
   proxy kom_ftp - wykonuje komendę ftp na dodatkowym połączeniu.
   quote arg1 ...- przesyła argumenty do serwera.
   recv z [l]    - synonim polecenia get.
   reget z [l]   - pobieranie pliku z serwera (z), w ten sposob, że jeśli na
                   maszynie lokalnej mamy już taki plik, to będzie do niego
		   dodawana zawartość pliku z serwera (z), komenda ta
                   umożliwia wznowienie transferu pliku po np.: zerwaniu
                   połączenia, czy innych kłopotach z siecią.
   remotehelp    - zdalny help.
   reset         - czyści kolejkę odpowiedzi, rozsynchronizuje
                   sekwencjonowanie komend i odpowiedzi serwera z komputerem
                   lokalnym.
   restart offset- restartuje get lub put od określonego offsetu.
   rename        - zmienia nazwe pliku.
   rmdir         - usuwa zdalny katalog.
   runique       - unikalna nazwa na lokalnym komputerze.
   sunique       - unikalna nazwa na zdalnym komputerze.
   send          - tak jak put.
   sendport      - włącza i wyłącza korzystanie z komendy PORT.
   site arg1 ... - przesyła argumenty serwerowi jako komendy SITE.
   status        - pokazuje status ftp.
   struct [naz]  - ustala nazwę struktury.
   system        - podaje nazwę systemu operacyjnego serwera.
   tenex         - zmien rodzaj transferu na taki, by dogadać się z
                   maszynami TENEX.
   trace         - łącza sledzenie pakietów.
   type [typ]    - określa typ transferu.
   user l [p] [k]- identyfikacja usera na odległym ftp.
   verbose       - włącza komunikaty.
   ? [kom]       - jak help [kom].

3. Co to jest Telnet?
   Telnet umożliwia zdalną prace na komputerze (np. korzystanie z usług
   publicznych - bazy danych, katalogów bibliotecznych).
   Jak? Tak:

   $ telnet adres.pl [port]

   lub

   $ telnet
   telnet> open adres.pl [port]

   Kończymy sesję naciskając (najczęściej) ^] (Ctrl-])]

   Niektóre komendy programu telnet:
   ? [komenda]   - pomoc.
   open komp [p] - połączenie z hostem komp na porcie (p).
   close, quit   - koniec.
   mode typ      - typ przesyłania (line/char).
   status        - status programu telnet.
   display [arg] - pokazuje wybrane wartości.
   send arg      - wysyła na komputer znaki specjalne.
   set arg wart  - ustawia zmienne telnet'u.

4. Co to jest WWW?
   WWW (W3) czyli World-Wide-Web, jest usługą internetową, opartą na
   hipertekście, a dokładnie na protokole http (HyperText Transfer Protokol).
   Dokumenty połączone są między sobą poprzez wyselekcjonowane zwroty, np.
   aREXus, kilikając na aREXus,
   przeniesiemy się do dokumentu na stronie www.tande.com/arexus!
   Do porusznia się po świecie WWW używamy browserów.
   Najbardziej znane to:
   Lynx - klient textowy (Unix)
   Netscape - klient graficzny (DOS, Unix, Windows'95, Windows'NT)
   Explorer - klient graficzny (DOS, Windows'95, Windows'NT)

5. Co to jest Gopher?
   Gopher to program nawigacyjny do przeglądanie dystrybuowanych
   elektronicznie dokumentów. Łączy w sobie cechy indeksowanej bazy danych
   i elektronicznego serwisu informatycznego.
   Protokół i oprogramowanie Gophera jest typu klient-serwer.
   Do informacji mamy dostęp na dwa sposoby:
   - browsing, polega na przeglądaniu kolejnych poziomów katalogu.
   - searching, umożliwia szybki dostęp.
   Obiektem dla Gophera może być:
   - katalog
   - plik tekstowy (niektóre programy mogą odbierać pliki dzwiękowe i grafikę)
   - indeks adresowy
   - program wyszukujący
   - wejście do sesji telnetowej z innym systemem informacyjnym
   Sesję zaczynamy:

   $ telnet hum.amu.edu.pl [port]
     login: gopher [port]

   lub

   $ gopher hum.amu.edu.pl [port]

6. Co to jest Veronica?
   Veronica to skrót od (very easy rodent-oriented net-wide index to
   computerized archives) i jest systemem wyszukiwania obiektów i
   otrzymywania list tytułów serwisu Gopher. Połączenia z serwisem Veronica
   sa udostępniane w wiekszości serwerów Gophera.
   Veronica spełnia dwie funkcje:
   - Zbiera dane
   - Oferuje poszukiwanie bazy klienta Gophera.

7. Co to jest Wais?
   Wais (Wide Area Information Serwer) jest systemem informacyjnym
   rozpowszechniania, wyszukiwania i odbierania danych.
   Połączenie:

   $ telnet sunsite.unc.edu [port]
     login: swais [port]

   lub

   $ gopher sunsite.unc.edu 70

8. Co to jest Archie?
   Archie jest systemem informacyjnym pozwalającym znaleść informację w
   InterNet'cie (szybkie przeglądanie).
   Połącznie:

   $ telnet archie.icm.edu.pl
     login: archie

   Komendy i parametry:
   exit, quit, bye      - Zakończenie sesji.
   help [kom]           - pomoc
   list [wzorzec]       - określa listę sitów opisanych w bazie danych np:
                          list \.pl$ - wyświetla wszyskie polskie site'y!
   site [gdzie]         - wyświetla katalogi i pliki w [gdzie].
   whatis [znaki]       - szuka łancuchu znaków.
   prog znaki | wzorzec
   find znaki | wzorzec - odnajduje pliki i katalogi, oraz ich adresy.
   mail [adres]         - przesyła wynik sesji na [adres].
   show [zmienna]       - wyświetla wartości zmiennych.
   set zmienna wartosc  - ustawia zmienną.
   term term [w] [k]    - informuje serwer o danym terminalu np.
                          set term xterm 24 100
   .                    - oznacza jeden dowlony znak.
   ^                    - musi się zaczynać od ciągu znaków.
   $                    - musi się konczyć od ciągu znaków.

9. Co to jest E-mail?
   E-mail - Poczta sieciowa!
   Wysyłanie poczty:

   $ mail -v -s "Temat:" kogos@adres
   To jest tekst poczty.
   To jest tekst poczty.
    lub (. i Enter).

   czytanie poczty:

   $ mail 

   Po więcej informacji otrzymasz po napisaniu:

   $ man mail

10. Co to są Newsy i Usenet?
    Newsy innaczej NetNews, Usenet to system pozwalający wymieniać artykuły.
11. Co to jest Jughead?
    Jest to narzędzie do wyszukiwania serwerów Gophera w InterNet'cie.

IV. SEKCJA D : podstawy
1.  Co to jest FakeMail?
    Być może chciałbyś wysłać do osoby nielubianej liścik, który by był
    "prawie" anonimem, co? Jest na to sposób, zaraz Ci to wytłumaczę...
    Co musisz mieć, oczywiście to co zawsze, po pierwsze dostęp do InterNet'u,
    a po drugie sprawny program telnet (klient), wysyłać możesz ręcznie
    (to właśnie zaraz Ci wytłumaczę) lub automagicznie (za pomocą programów
    dostępnych w sieci).
    Wysyłać możesz pod dowolnym systemem, nawet spod badziewnego znaku m$.
    Oki, po kolei:
    Po pierwsze musisz napisać:

    # telnet jakis.host.na.swiecie 25

    Czyli po prostu zatelnetowac, na port 25 dowolnego (no prawie) systemu,
    np. pipeta.chemia.pk.edu.pl, dalej, gdy pojawi się odpowiednie
    zgłoszenie systemu, piszemy, zatwierdzając enterem:

    HELO jakas.wymyslona.domena

    Wymyślamy sobie jakąś domenę, następnie...

    MAIL FROM: odemnie@jakas.wymyslona.domena

    jakiś login, z wcześniej wymyśloną domeną oraz...

    RCPT TO: dokogo@gdzie.wyslac.list

    do kogo wysyłamy dany list, a później...

    DATA

    przechodzimy do pisania treści listu, koniecznie zaczynająć od:

    From: odemnie@jakas.wymyslona.domena
    To: dokogo@gdzie.wyslac.list
    Subject: Temat listu...
    Reply-To: totu@ma.przyjsc.odpowiedz

    Ostatni wiersz, Reply-To: (...), zaznacza, gdzie ma przyjść odpowiedz,
    a dalej już nasza wymyślona treść listu, którą kończymy kropką i
    piszemy QUIT, czyli:

    To jest tresc listu
    To jest tresc listu
    To jest tresc listu
    .
    QUIT

    I już koniec list został wysłany do adresata ;-)

    Jeszcze innym sposobem wysłania listu z dowolnym polem From: jest
    zainstalowanie sobie Qmail (MTA) dla systemów Unix'owych, np. Linux'a i
    odpowiednie ustawienie zmiennych otoczenia na np (bash|sh):
    export MAILUSER=odemnie
    export MAILHOST=jakas.wymyslona.domena
    Oraz odpalenie poczty i wiooo...

V. SEKCJA E : internet
1.  Gdzie szukać w InterNet'cie?
    http://free.polbox.pl/  - bezpłatne e-mail i strony WWW (PL)
    http://www.polbox.com/  - bezpłatne e-mail i strony WWW (GB)
    http://friko.onet.pl/   - bezpłatne e-mail.

VI. SEKCJA F : koniec
     No i już koniec pierwszej, podstawowej ver.! Następna, bardziej
     zaawansowana, lada tydzień!