PoMoC DLa PoCZaTKuJaCYCH HaCKeRoW

|Ponizsze opracowanie omawia, w sposob podstawowy i lopatologiczny, | |obsluge i wykorzystanie Unix'a i Internet'u, dla potrzeb szarych | |ludzi ;-> Autor, zastrzega sobie, ze nie odpowiada, za uzycie tego | |opracowania, do niecnych i niezgodnych z prawem celow! Opracowanie | |to jest rozprowadzane w formie licencji GNU. Jesli zauwazyles bledy,| |niezgodnosci lub nawet bzdury, to napisz do mnie i wyjasnij sprawe. | I. ZACZYNAMY! 1. Na poczatku musimy posiadac jakiekolwiek konto w internecie, najlatwiej jest sie zglosic do jednego z providerow (ternet, polbox itd.), lub tez mozna otrzymac konto na uczelni, bac w szkole sredniej. Standardowo providerzy oferuja, pelny dostep do sieci, czyli Unix Shell i SLIP/PPP, adres poczty elektronicznej i wlasna strone WWW. Gdy wykupimy (dostaniemy) juz konto, okreslimy swoj identyfikator i dostaniemy haslo, przychodzi pora by sie zalogowac i.... 2. Standardowo, w Unix'ie na poczatku wpisujemy swoj identyfikator, nastepnie haslo, jednak jak wiecie, nie ma jednego Unix'a, odmian tego systemu sa dziesiatki, ze wymienie: 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 koncu Linux (Darmowy) i to w kilku edycjach, jak np. Debian, Red Hat (Colgate;-) czy Slackware. Ale powrocmy do logowania ktore zawyczaj wyglada tak: np. w Linux'ie alpha login: jasio Password: gdzie, alpha to nazwa komputera Oczywicie, ze moze zamiast login (Login), pojawic sie Username (username), a Password moze byc pisane z malej litery (password). Zwyczajowo (?), przyjelo sie ze login sklada sie tylko z malych liter, zazwyczaj od 3 do 8, za to haslo jest juz kombinacja malych i duzych liter, oraz cyfr znakow specjalnych (?) (3-8) np: Zs23dU czy lajeT8. Standardowo mozna sie zalogowac jako: root, sys, bin, trouble, deamon, uucp, nuucp, rje, lp, adm... Hasla takie sa kodowane i sprawdzane z haslami w pliku /etc/passwd czy /etc/shadow, ta wlasnie metode wykorzystuja wszelkiej masci hackerzy ;-> 3. Oto przykladowy plik /etc/passwd przy wylaczonym shadowingu, bardzo nas, hackerow 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, nastepnie jest zakodowane haslo (jesli jest puste, to przy wpisywaniu hasla podczas logowania wystarczy wcisnac enter!), trzecie pole to tkz. User Id (UID), czwarte pole to Group Id (GID), piate pole, to pole opisu, nastepne wskazuje na katalog domowy uzytkownika, a ostatnie na powloke. Tak zas wyglada plik /etc/password z wlaczonym shadowingiem, hasla sa 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 wlaczonym shadwingu) interesuje nas plik /etc/shadow ! 4. Twoim glownym zadaniem jako hackera jest zdobycie hasla root'a, co pociaga za soba zdobycie pliku z haslami /etc/passwd lub /etc/shadow! Gdy uda Ci sie juz to zdobyc, musisz zaopatrzyc sie (lub samemu zrobic) plik ze slownikiem oraz program do kodowania/sprawdzania. Program taki bierze wyraz ze slownika, koduje go i porownuje tak zakodowane slowo ze slowem w pliku z haslami. Dobry slownik powinien miec okolo 30-40MB!!! Mozna tez, jesli ci sie uda zmienic wiersz z haslem root'a na root::0:0::: i wystarczy teraz: login: root Password: # passwd Enter password: New password: Rep. password: # i my szalejemy, a prawdziwy root placze ;-> 5. Po prawidlowym zalogowaniu ukarze nam sie, $ lub #, czyli Unix'owski prompt (warto zauwazyc, ze bardzo czest znak $ zarezerwowany jest dla prostego uzytkownika, a znak # tylko dla root'a). Znalezlismy sie w _prawdziwym_ (nie jakies windowsy'95 czy NT;) systemie operacyjnym. Unix sklada sie z trzech komponentow, tj. kernela, shella i systemu plikow. Kernel jest glownym jadrem systemu, zarzadza pamiecia, systemem plikow oraz programowymi i sprzetowymi urzadzeniami. Zawiera tez jezyk niskiego poziomu, shell obslugujacy (utrzymujacym) procesy. Shell jest to jezyk wysokiego poziomu, ktory moze byc uzywany do wykonywania koment systemu, lub tez jako jezyk programowania, do pisania skomplikowanych skryptow. Standardowymi unix'owymi shell'ami sa: /bin/ash /bin/bash (Bourne-shell) /bin/sh (Bourne-shell) /bin/csh (C-shell) /bin/ksh (Korn-shell) /bin/tcsh /bin/zsh (Do pisania skryptow polecam bash'a lub tcsh'a) System plikow przedstawiamy w trzech kategoriach: katalogi (directories) pliki pospolite (ordinary files) pliki specjalne (d, -, l, c) Oto najprostsza struktura systemu plikow (przykladowa!): (root directory) / | +-----+------+-----+-----+-----+--+---+-----+------------+-----+----+ | | | | | | | | | | | /dev /proc /etc /bin /lib /home /mnt /lost+found /usr /tmp /root | +--------+-----+--(...)--+ | | | | /httpd /ftp /jasio /other_users | | | /public_html | +-----+---+--+-----+-----+ | | | | | /bin /dev /etc /lib /pub / glowny katalog (root directory) /dev zawiera pliki dla fizycznych urzadzen (I/O), takich jak drukarka, twardy dysk, cdrom czy karta muzyczna. /proc niezbedny dla komendy ps /etc zawiera niezbedne (ale nietylko) pliki konfiguracyjne systemu np. /etc/passwd /etc/group /etc/shadow itp. itd. /bin wykonywalne narzedzia systemowe /lib biblioteki run-time /home katalog domowy, uzytkownicy systemu itp. /mnt uzywany jako punkt do przylanczania (mounting) np: innego dysku, cdrom'a czy tez innego systemu plikow. /lost+found katalog uzywany przez program fsck /usr narzedzia i aplikacje /tmp katalog dla plikow tymczasowych /root katalog wlasny nadzorcy systemu II. PODSTAWOWA OBSLUGA 1. Aby okreslic w jakim miejscu na dysku sie znajdujemy, mozna napisac: $ pwd /home/jasio $ Dla uzyskania wiecej informacji napisz: $ man pwd Tak sprawdzaj kazde polecenie ktorego nie znasz! Mozna jeszcze zamiast man, uzywac polecenia apropos, ale nie na wszystkim maszynach to dziala. W Unix'ie znak / (slash), spelnia ta sama role co w DOS'ie znak \ (backslash). W naszym przypadku, osnacza to, ze znajdujemy sie w katalogu /home/jasio 2. 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 zauwazylismy, komenda ls jest odpowiednikiem (lepszym;), DOS'owskiej komendy dir (w wielu systemach, spokojnie, o ile root pomyslal, mozna zamiast ls, mozna pisac dir). Samo ls wyswietla tylko katalogi i pliki, parametr -a pozwala na obejrzenie plikow, ukrytych (zaczynajacych sie od '.') za to ls -l wyswietla dokladne widomosci o plikach i katalogach. Pierwszy wiersz wydruku podaje calkowita objetosc dysku zajmowana przez nasze pliki (katalogi) - total 5. Kolumna zawierajaca liczby: 512 512 512 512 159 Podaje rozmiary danych plikow (katalogow) w bajtach. Fraza Dec 22 15:15 podaje dokladna date i czas zmiany pliku (kat.) Druga kolumna zawierajaca slowo 'jasio' okresla wlasciciela pliku (katalogu), trzecia 'users' okresla grupe dostepu do pliku (kat.). Pierwsza kolumna dotyczy praw i rodzaju plikow (katalogow). pierwsza litera 'd' oznacza, ze to jest katalog, literka 'l', oznaczalaby link symbioliczny do pliku (katalogu), a minus '-', mowi nam, ze jest to zwykly plik. Nastepnie okreslane sa przywileje, kolejno po trzy dla wlasciciela, grupy i innych. Literka 'r' oznacza read, czyli mozliwosc czytania, 'w' write, czyli pisanie, 'x' execute, wykonywania (np. aby wejsc do katalogu, niezbedne jest ustawienie uprawnienia 'r-x')! W naszym przypadku wyglada to mniejwiecej tak: a). +-+ +-+-+-+-+-+-+-+-+-+ |k| |r|w|x|r|w|x|r|w|x| +-+ +-+-+-+-+-+-+-+-+-+ | \--+--/\--+-/\--+-/ | | | | | | | \uprawnienia dla pozostalych uzytkownikow (other) | | | | | \uprawnienia dla grupy (group) | | | \uprawnienia dla wlasciciela (owner) | \rodzaj kategorii (plik, katalog, wskaznik, urzadzenia itp. itd.) A tak przedstawia sie znaczenie bitow w slowie, zawierajacym prawa dostepu: b). +-+-+-+ +-+-+-+-+-+-+-+-+-+ |s|g|t| |r|w|x|r|w|x|r|w|x| +-+-+-+ +-+-+-+-+-+-+-+-+-+ \--+--/ \--+--/\--+-/\--+-/ | | | | | | | \uprawnienia dla pozostalych uzytkownikow | | | | | \uprawnienia dla grupy | | | \uprawnienia dla wlasciciela | \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, 'd'katalog, 'l'wskaznik itp. itd.) s - bit SUID ( ustawienie go powoduje, ze dostep do pliku moze miec tylko jeden uzytkownik) g - bit SGID (ustawienie dla katalogu, powoduje, ze pliki tworzone w tym katalogu beda nalezaly do tej samej grupy, do ktorej nalezy katalog, a nie do grupy do ktorej nalezy wlasciciel pliku) t - bit sticky (ustawienie go powoduje, ze program po wykonaniu nie jest usowany z pamieci) a). Interpretacja uprawnien, wyswietlonych po wydaniu polecenia 'ls -l' b). Format informacji zapisanych w wezle, kazdej klasy uzytkownikow. 3. Uprawnienia dla plikow i katalogow ustawiamy za pomoca polecenia 'chmod', ktorego format: chmod who+, -, =r, w, x, gdzie who, moze oznaczac: u-user (uzytkownik, wlasciciel) g-group (grupa) o-other (inni uzytkownicy) a-all (wszyscy) np. chmod g+r plik1 nadaje grupie, mozliwosc czytania pliku (kat.) plik1. chmod u+x plik2 nadaje wlascicielowi, prawa wykonywania pliku plik2 chmod o-x plik3 odbiera pozostalym (other) uzytkownikom, prawa do wykonywania pliku plik3 chmod g=rwx plik4 nadaje pelne uprawnienia grupie, do korej nalezy wlasciciel chmod ugo-x plik5 lub chmod a-x plik5 odbiera wszystkim prawa do wykonywania pliku plik5 Mozna tez za pomoca polecenia 'chmod', nadawac uprawnienia w formie octalnej np. chmod 740 plik1 nadaje wlascicielowi uprwanienia do czytania, pisania i wykonywania pliku, grupie tylko to czytania a innym zabiera wszystkie uprawnienia. Obliczyc wartosc octalna uprawnien jest bardzo latwo: +-+-+-+-+-+-+-+-+-+ |r|w|x|r|w|x|r|w|x| pelne uprawnienia dla wszystkich +-+-+-+-+-+-+-+-+-+ 4+2+1 4+2+1 4+2+1 7 7 7 czyli chmod 777 plik0 +-+-+-+-+-+-+-+-+-+ |r|w|x|r|w|-|-|-|-| pelne uprawnienia dla wlasciciela, prawo czytania i +-+-+-+-+-+-+-+-+-+ pisania dla grupu 4+2+1 4+2+0 0+0+0 7 6 0 czyli chmod 760 plik0 +-+-+-+-+-+-+-+-+-+ |r|-|-|-|-|-|r|w|-| uprawnienie do czytania dla wlasciciela oraz prawo do +-+-+-+-+-+-+-+-+-+ czytania i pisania dla innych uzytkownikow 4+0+0 0+0+0 4+2+0 4 0 6 czyli chmod 406 plik0 Polecenie 'chmod' mozna wykonywac z parametrem '-R' (ang. recursive), np. chmod -R 006 gre* jesli gre* natrafi na katalog to wszystkie jego podkatalogi z plikami wlacznie otrzymaja prawo do czytania i pisania tylko dla innych uzytkownikow! Poleceniem dosyc waznym jest jeszcze 'unmask', ktory precyzuje standardowe prawa dostepu dla plikow w momencie ich zakladania! Wydanie polecenia: unmask pokazuje liczbe, zazwyczaj '022', ktora odejmowana jest od pelnego zestawu praw, to jest +-+-+-+-+-+-+-+-+-+ |r|w|x|r|w|x|r|w|x| pelne uprawnienia dla wszystkich +-+-+-+-+-+-+-+-+-+ 4+2+1 4+2+1 4+2+1 7 7 7 777 dla katalogow i +-+-+-+-+-+-+-+-+-+ |r|w|-|r|w|-|r|w|-| pelne uprawnienia, bez uruchamiania (!) dla wszystkich +-+-+-+-+-+-+-+-+-+ 4+2+0 4+2+0 4+2+0 6 6 6 666 dla plikow czyli oznacza to, ze standardowo beda tworzone pliki z uprawnieniami 644 i katalogi z uprawnieniami 755! Wydanie polecenia: unmask 077 odbierze wszystkim, poza wlascicielem, wszelkie prawa do plikow (kat.), uwaga, obowiazuje tu artmetyka osemkowa (octalna)!!! 4. Pora teraz zajac sie grupami, co to jest i jak to sie je? Po wydaniu polecenia 'ls -l', otrzymalismy 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 juz, ze 'jasio' jest wlascicielem, ale w (2), 'jasio', jest tez oznaczony jako grupa, co to oznacza? Po prostu, grupa w tym przypadku jest tylko 'jasio' czyli tak naprawde nie ma zadnych grup ;-), w przypadku (1), grupa 'users' to najczesciej uzytkownicy sytemu, czyli np: users to jasio, halinka, basia, asia itp. Oto przykladowa 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 - haslo (najczesciej puste, czyli ::) gid (GID) - Group Id (identyfikator grupy) login - login 5. Teraz musimy sie nauczyc szybkiego poruszania po Unix'ie, poznalismy juz polecenie 'ls', czas teraz na nastepne: cd - zmienia katalog (ang. change directory) np.: cd .. - przejdziemy do wyzszego katalogu (rodzica) cd katalog1 - wejdziemy do katalogu 'katalog1' cd /etc/rc.d - wejdziemy do katalogu '/etc/rc.d' cd / - wejdziemy do glownego (root) katalogu! pwd - podaje bierzacy 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 bierzacym katalogu :-) rmdir - usowa katalog (musi byc pusty!) np.: rmdir k1 - usowa katalog 'k1' rmdir k1 k2 k3 - usowa katalogi cp - kopiowanie plikow 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 jesli plik 'p2' istnieje pyta sie czy go zamazac cp -r k1 k2 - kopijuje katalog 'k1' i automatycznie tworzy katalog 'k2' mv - przenoszenie i zmiana nazwy plikow np.: mv p1 p2 - zmienia nazwe z 'p1' na 'p2' mv p1 /etc - przenosi plik 'p1' do katalogu '/etc' mv -i p1 p2 - przenosi plik 'p1' do pliku 'p2' ale jesli plik 'p2' istnieje pyta sie czy go zamazac. rm - usowa plik np.: rm p1 - usowa plik 'p1' rm -i p1 - pyta sie czy usonac i po potwierdzeniu usowa rm -r k1 - usowa katalog, wszystkie pliki i podkatalogi!!! cat - wypisuje zawartosc pliku na standardowe wyjscie (ekran, plik ...) np.: cat p1 - wyswietla zawartosc pliku 'p1' cat > p1 - pozwala zapisac tekst do pliku 'p1' po nacisnieciu Ctrl-D Obok polecenia 'cat', mozemy uzyc jeszcze 'more' czy 'less', ktore sa dostepne w niektorych instalacjach Unix'a, np. Linux'a ;-) joe, ed, vi - proste edytorki tekstowe 6. Zadasz moze pytanie, jak zachaczyc wieksze grupy plikow (kat.) np. przy kopiowaniu, przeciez nie bedziesz samemu sam wszystkiego wpisywal, nie? Tak wiec piszemy znak: * obejmuje wszystkie zwykle pliki w bierzacym katalogu np. p1 p2 p3 p4 k1 k2 k3 k4 itd. nie obejmuje natomiast plikow ukrytych, czyli tych zaczynajacych sie od kropki (kropek) np. .ps1 .ps2 .ks1 .ks2 ... .. ...ps6 ........k8 itd. Pliki te obejrzymy piszac: .* Piszac: Agna*La* dostaniemy np. Agna123sddddLa33fdff, czy Agna233La000 Znakiem: ? zastepujemy, dokladnie jeden znak ;-) np. A?a moze oznaczac Ala A9a Aaa AAa itd., a A???a moze znaczyc A123a itd... Piszac: [123]a otrzymamy: 1a 2a lub 3a, zamiast [123]a, mozemy napisac [1-3]a, co oznacza dokladnie to samo! ([a-z], [A-Z], [A-Za-z0-9] itd). Mozemy jeszcze uzyc: test.{exe,obj,out,o,exe} Pasuje do: test.exe test.obj test.out test.o i test.exe Oczywiscie mozemy kombinowac, np: Linu?-[0-9]*-[abcde0-9]???{exe,out,tar,gz}.*[QWEhj35] tez ma sens ;-) 7. Inne znaki (dzokery) specjalne: & - uruchamianie procesu w tle np.: playmidi muzyka.mid & > - kieruje na wyjscie np.: echo "To jest tekst" > p1 < - kieruje na wejscie zawartosc pliku np.: sort < p1 >> - kieruje na wyjscie i np. dolancza do konca 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 wejscie (wyjscie na wejscie) np.: ls -Fla | more |& - kieruje na stdout takze strumien z bledami (wyjscie+wyjscie z bledami na wejscie) np.: cat niemamnie |& more Oczywiscie mozemy wszystko kombinowac ze soba np: sort < lista >> plik.z.posortowany lub (ls niemamnie > info.plik) >& bledy 8. Bardzo uzytecznym programem jest 'ps' (ang. proces status) Jesli wywolamy go bez zadnych parametrow, naszym ocza ukarze sie: $ 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 oznaczaja a - wszystkie procesy (all) x - dodanie procesow nie kontrolowanych przez terminal (ang. deteched) u - identyfikacja uzytkownikow (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 - uzytkownik procesu PID - numer identyfikacyjny procesu TTY - procesy zwiazane z naszym terminalem STAT - status procesu R - proces dzialajacy (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), zakonczyl sie ale nie rozliczyl sie jeszcze z procesami nadrzednymi! TIME - jak dlugo dziala proces COMMAND - nazwa programu, ktorej odpowiada proces %CPU - ilosc zaangazowania procesora w procesie %MEM - jaka czesc pamieci operacyjnej zajmuje proces START - czas startu procesu Oczywiscie jest to _prawdziwy_ system operacyjny, a nie jakis windows, czy inne gowno, tak wiec kazdy proces ,mozemy zabic poleceniem: $ kill [PID] np. $ kill 200 200 terminated $ a jesli proces jest oporny i nie chce dac sie ubic, napisz $ kill -9 [PID] malo, ktory to przezyje ;-) Aby zabic rownoczesnie wszystkie procesy, warto napisac: $ kill -9 -1 Acha, jesli jestes samobujca napisz $ kill -9 0 Hieee, ha, ha ;-> Do obslugiwania zadan, posiadamy jeszcze komendy jobs - wyswietla 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 kloumna omawia bierzacy stan zadania (Stopped - zatrzymane, Running - w toku), czwrta oznacza, gdzie znajduje sie wyjscie zadania, a piata, wykonywane polecenie. bg [JOB] - uruchamia zawieszone zadanie [JOB], w tle fg [JOB] - uruchamia zawieszone zadanie [JOB], w pierwszym planie kill %[JOB] - przerywa zadanie [JOB] 9. W Unix'ie mozemy otwierac kilka rownoczesnych sesji, aby to zrobic nie przerywajac poprzedniej sesji, piszemy: $ su -[user] gdzie, [user] to identyfikator uzytkownika, potem podajemy haslo i sesja jest juz otwarta. 10.W miare wygodnie jest rozwiazane pakowanie i archiwizacja danych w systemach Unix'owych. Najczesciej uzywanymi do tego programami sa archiwizator 'tar' (ten program TYLKO! archiwizuje NIE! kompresuje) oraz kompresory (bardzo czesto uzywane razem z 'tar'em), 'gzip' i 'compress'. Ostatnio coraz czesciej mozna spotkac, znane ze srodowiska 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 pomoca 'gzip'a lub 'compress'a). $ tar -xvf Rozarchiwizowuje plik 'zarchiwizowany_plik.tar'. Poleceniem: $ tar -tf Przegladamy 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 Najczesciej w Unix'ach stosujemy rozszerzaenia *.tar.gz lub *.tgz, ktore powstaja po archiwizacji programem 'tar' i kompresji programem 'gzip'. $ tar -cvf pliki | gzip W wyniku tego powstanie plik 'plik.tar.gz', ktory rozkompresowujemy poleceniem: $ tar -zxvf Najczesciej stosowane opcje: v - wypisuje komentarze na temat przetwarzania pliku (ang. verbose) c - zakladanie nowego archiwum (ang. create) t - wypisywanie zawartosci pliku arch. (ang. table of contents) u - dodawanie nowych plikow do arch. (ang. update) x - odkompresowywanie pliko (ang. extract) z - arch. typu gzip 11.Warto tez wiedziec jak sprawdzic ilosc 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-blokow (kb) [kbytes] Used - ilosc uzywanych 1024-blokow (kb) [used] Available - ilosc wolnych 1024-blokow (kb) [avail] Capacity - ile procent systemu plikow jest zajmowany [capacity] Mounted on - gdzie dany system plikow jest podpiety (patrz dalej) Drugim uzytecznym poleceniem, jest polecenie 'du' (ang. disk usage), ktore pokazuje ilosc miejsca (kb), zajmowanego przez pliki w danym katalogu oraz we wszystkich podkatalogach. A jako ostatnia wyswietlona liczbe, podaje laczna objetosc wszystkich plikow w tych katalogach. Np. $ du 13 ./.xfm 26 ./scripts/irc 27 ./scripts 1 ./mail 1208 ./tst 6 ./hack 30 ./tst2 1323 . $ PS. Pamiec w systemie Linux mozemy skontrolowac piszac 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 uzywanych zasobach (pamieci, swapu itd.) 12.Jezeli chcemy uzyc dyskietki, to musimy ja najpierw sformatowac: # fdformat /dev/fd0H1440 formatuje dyskietke w napedzie 3.5" na 1.44MB, a nastepnie utworzyc system plikow: # mkfs -t ext2 -c /dev/fd0H1440 tworzy system plikow dla Linux'a (ext2), a # mformat a: tworzy system plikow, typu dosowskiego (FAT). Aby skopiowac cos 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 urzadzenia) device_name - nazwa urzadzenia na ktore kopiujemy (np. /dev/fd0) Czyli np. kopiowanie pliku /etc/passwd na dyskietke w systemie dos, moze np. wygladac 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 Oczywiscie dyskietke dos'owska mozemy przygotowac wczesniej w dos'ie, wtedy to operacja skroci sie tylko do punktow 3), 4) i 5). O mountowaniu i wymountowywaniu pisze dalej... Rozne Unix'y maja zainterpretowane rozne systemy plikow 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 uzyc np. dyskietke czy CD-ROM, a nawet inna partycje z np. DOS'em trzeba ja najpierw zamountowac (polecenie 'mount'), a po zakonczonej pracy wymountowac (polecenie 'umount'). Acha, trzeba pamietac, ze te polecenie moze wydawac tylko root. I tak aby to robic automatycznie i polautomatycznie, w niektorych Unixa'ch 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 plikow) druga kolumna - gdzie bedzie dostepne urzadzenie trzecia kolumna - rodzaj systemu plikow czwarta kolumna - parametry (np. auto, noauto, defaults, [user]) piata kolumna - odnosi sie do programu dump szosta kolumna - odnosi sie do programu fsck (1 - sprawdzac file system przy boot'owaniu 0 - nie sprawdzac) teraz wystarczy napisac 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 juz wiemy co i jak (rw - read/write ro - read only), glowny katalog mamy zamountowany w '/', a w katalogu /mnt/hdd, mamy partycje dos'owska. Teraz aby zamountowac cdrom, wystarczy napisac: # mount /mnt/cdrom a wymountowc # umount /mnt/cdrom Jesli zas nie mamy pliku /etc/fstab, musimy napisac # mount -t iso9660 /dev/hdb /mnt/cdrom i/lub # mount -t msdos /dev/hda1 /mnt/hdd aby zamountowac partycje dosowska. Aby wymountowac wystarczy napisac # umount /mnt/hdd Ogolnie mountujemy piszac: # mount -opcje filesystem urzadzenie podczepic_pod_katalog Trzeba pamietac, aby przed zamountowaniem, w np. CD-ROM'ie obecny byl CD! Acha, troche o urzadzeniach: /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 dyskow elastycznych /dev/fd0H1440 - dyskietka 3.5" 1.44MB /dev/fd0H1200 - dyskietka 5.25" 1.20MB /dev/fd1 - druga stacja dyskow elastycznych /dev/cua0 - COM1 /dev/cua1 - COM2 /dev/lp0 - LPT1 /dev/lp1 - LPT2 13.Aliasy, czyli przypisanie komendy skrotowi,tez sie przydadz, piszac np. $ alias skrot=`polecenie -opcje` np. $ alias dir=`ls -Fla` $ alias copy=`cp $1 $2` to bylo dla bash'a $ alias skrot "polecenie -opcje" np. $ alias dir "ls -Fla" $ alias copy "cp $1 $2" to bylo dla tcsh'a. 14.Czasami chcemy sie zorientowac z kim jednoczesnie jestesmy w systemie, piszemy: $ users root halinka asia $ I otrzymamy identyfikatory pracujacych uzytkownikow, ale aby wiedziec wiecej napiszmy: $ who root tty1 Jan 27 20:33 halinka tty2 Jan 27 20:38 asia tty3 Jan 27 20:39 $ pierwszy rzad to login uzytkownika, drugi to jego (usera) terminal, a trzeci i ostatni to dokladna data i czas zalogowania. Zas jesli napiszemy: $ whoami root $ Otrzymamy identyfikator bierzacego uzytkownika, piszac zas: $ who am i alpha!root ttyp1 Jan 27 20:33 $ Otrzymamy to co powyzej, z informacja o nazwie komputera, typu terminala i dacie i czasie rozpoczecia pracy. Mozemy tez napisac: $ 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 troche wiecej... 8:43pm - biezaca godzina (20:43) up 13 min - jak dlugo pracuje nasz system (13min) 3 users - ilu uzytkownikow pracuje load average - obciazenie systemu przez programy USER - identyfikator uzytkownika [User] TTY - nazwa terminalu [tty] FROM - informacja dodatkowa [] LOGIN@ - godzina zalogowania [login@] IDLE - ile czasu uplynelo od ost. nacisniecia klawisza [idle] JCPU - czas zuzyty przez wszystkie programy na danym terminalu PCPU - oraz przez wszystkie programy w danym momencie WHAT - nazwa aktywnego procesu [what] Bardzo czesto uzywane 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 uzytkownika. Mozemy tez dokladniej dowiedziec sie wiecej o danym uzytkowniku 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 widac dowiadujemy sie, jakie sa prawdziwe personalia uzytkownika (In real life), nazwy jego kartoteki prywatnej (Directory), rodzaj shell'a (Shell), kiedy sie zalogowal (On since), lub kiedy ostatnio byl w sieci (Last login), czy dostal/czytal ostatnia paczke poczty i kiedy oraz wyswietla jesli jest plik .plan (.project) uzytkownika (No Plan). Polecenie mozemy jeszcze wywloywac: $ finger root $ finger @alpha.center.net $ finger gutek@194.102.102.7 $ finger @194.241.101.38 itp. Do porozumiewania sie z innymi uzytkownikami, uzywamy: mesg y|n - zezwolenie lub nie na przyjmowanie komunikatow write login [tty?] - wyslanie komunikatu do login, u osoby do ktorej wyslemy pojawi sie tekst: Message from alpha!root on tty1 at 23:33 i wiadomosc talk login[@adres] - mozemy nawiazac interaktywny kontakt nie tylko z osoba z naszego komputera, ale tez innego z sieci. Mozliwe komunikaty: No connect yet - brak polaczenia 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 - nawiazano polaczenie po stronie adresata pojawi sie zas Message from Talk_Daemon@kom.net at 23:33 talk: connection requested by root@kom.net talk: respond with: talk root@kom.net Czyli jesli adresat po odczytaniu tego napisze talk root@kom.net, to polaczenie zostanie nawiazane wall [plik.txt] - wyslanie tekstu do wszystkich uzytkownikow rwall [plik.txt] - wyslanie tekstu do wszystkich w sieci ruser [system] - wyswietla uzytkownikow pracujacych w [systemach] III. FTP, Telnet, WWW, Gopher, Veronica, Wais, Archie, E-mail, News. 1. Jesli zastanawiasz sie w jaki sposob przesylac pliki w ogolno swiatowej sieci internet, to mam dla Ciebie przygotowana odpowiedzl, do tego celu sluzy (bardzo czesto), program FTP (File Transfer Protocol)! Aby "zassac" pliki z jakiegos komputera, niezbedne jest do tego znac jego nazwe, oraz miec na nim zalozone konto chronione haslem. Na szczescie InterNet ofiwarowuje nam bardzo duzo, tak zwanych, anonimowych kont (Anonymous FTP), z ktorych bez ograniczen (z wyjatkami, z wyjatkami), mozemy "zassysac" pliki (uwaga znajdziemy sie wtedy w kartotece specjalnie to tego przeznaczonej, najczesciej /home/ftp/, ktora nam bedzie sie pokazywala jako "/", ale to NIE JEST root directory!!!). Acha, jesli logujemy sie na konto typu anonimowego, jako login wpisujemy anonymous lub guest, a zamiast hasla podajemyswoj adres pocztowy - przynajmniej nalezy to do dobrego tonu, choc nie polecam tego hackera, mozemy podawac jako haslo np. gucio@elb.pas.edu.pl lub tez tylko gucio@. Komende ftp, mozemy wywolac z parametrami: -d (wlacza sledzenie) -g (wylacza rozszerzenia nazw plikow) -i (wylacza zapytania) -n (wylacza auto-login) dotyczy to pliku ~/.netrc gdzie: machine name (nazwa maszyny) login name (identyfikator) password str (haslo) account str (dodatkowe haslo) macdef name (makrodefinicja) -v (wyswietla komunikaty) Laczymy sie naprzyklad: $ ftp adres.jakiegos.komputera.pl lub $ ftp ftp> open adres.jakiegos.komputera.pl a dalej Connected to adres.jakiegos.komputera.pl 220 jakis.komputer FTP server (UNIX x.x) ready. Name (adres.jakiegos.komputera.pl:gucio): anonymous (lub guest) 331 Guest login ok, send ident at password. Password: gucio@ (tego nie widac, ale to zalezy) 230 Guest login ok, acces restrictions apply. ftp> bin 200 Type set to I. ftp> I teraz uzywamy sobie stosujac komendy, wiekszosc o podobnej skladnii, jak omowione wczesniej (II.2 & II.5). Uwaga, w niektorych komendach mozna zastosowac "!", ktory okresla komputer lokalny (wywolana zostaje lokalna powloka), np. !cd - zmieni katalog (lokalny) ls - wydruk zawartosci katalogu (zdalnego) wraz z uprawnieniami (dir). cd - zmiana katalogu (zdalnego). cdup - zmiana katalogu (zdalnego) na nadrzedny. pwd - podaje nazwe katalogu (zdalnego). lcd - podaje nazwe katalogu (lokalnego). dir - wyswietla katalog (zdalny) i ewentualnie zapisuje do pliku (lokalnego). Skladnia: dir [katalog_zdalny] [plik_lokalny] get - pobiera plik z komputera (zdalnego) i zapisuje na lokalnym, ewentualnie zmienia nazwe pliku na inna. Skladnia: get plik_zdalny [plik_lokalny] mget - pobiera jeden lub wiecej plikow z komputera (zdalnego) i zapisuje na komputerze lokalnym. Mozna stosowac maski! Skladnia: mget *2.0.{29,30,31}*t[ag][rz]* mget *.txt put - umieszcza jeden plik z komputera (lokalnego) i kladzie na komputer zdalny, ewentualnie zmieniajac jego nazwe. Skaldnia: put plik_lokalny [plik_zdalny] mput - umieszcza jeden lub wiece plikow z komputera (lokalnego) na komputer zdalny. Skladnia: mput *.tgz asc - zmienia (ascii) tryb transferu na ascii (przesylanie TYLKO tekstu) Jesli przeslesz w tym trybie binaria to sa juz zniszczone!!!! bin - zmienia (binary) tryb transferu na binarny (przsylanie wszystkiego bardzo wazne)! Oraz inne komendy programu FTP (na platformach UNIX): ! - wywoluje lokalna powloke. $ makro [arg] - wykonuje makro, ktore jest zdefiniowane komenda macdef. account [pas] - podaje dodatkowe haslo. append l [z] - dolancza zbior lokalny (l) do zbioru na odleglym komp. bell - uaktywnai informowanie dzwiekowe. bye, quit - konczy sesje ftp (jeszcze close & disconnect). case - przelacza male litery na duze. cr - rodzaj traktowania znacznika konca linii. delete - uzuwa plik zdalny. debug - przelancza tryb sledzenia. form format - ustala rodzaj formatu transferu. hash - przelacza wyswietlanie znaku "#" po 1024 bajtach. help [komend] - pomoc. macdef nazwa - definiuje makrodefinicje, linia pusta konczy makro. mdelete - usuwa zdalne pliki zgodne z maska. mdir z l - wiele katalogow zdalnych w jednym pliku lokalnym. mkdir - tworzy katalog zdalny. mls z l - wiele katalogow zdalnych w jednym pliku lokalnym. mode [tryb] - ustala tryb transferu. open kom [pr] - nawiazuje polaczeniem z komputer (kom), przez port (pr). prompt - wylancza potwierdzenie. proxy kom_ftp - wykonuje komende ftp na dodatkowym polaczeniu. rename - zmienia nazwe pliku. rmdir - usuwa zdalny katalog. runique - unikalna nazwa na lokalnym komputerze. sunique - unikalna nazwa na zdalnym komputerze. send - tak jak put. status - pokazuje status ftp. struct [naz] - ustala nazwe struktury. type [typ] - okresla typ transferu. user l [p] [k]- identyfikacja usera na odleglym ftp. verbose - wlacza komunikaty. ? [kom] - jak help [kom]. 2. Telnet umozliwia zdalna prace na komputerze (np. korzystanie z uslug publicznych - bazy danych, katalogow bibliotecznych). Jak? Tak: $ telnet adres.pl [port] lub $ telnet telnet> open adres.pl [port] Konczymy sesje naciskajac (najczesciej) ^] (Ctrl-])] Komendy programu telnet: ? [komenda] - pomoc. open komp [p] - polaczeni z komp na porcie (p). close, quit - koniec. mode typ - typ przesylania (line/char). status - status programu telnet. display [arg] - pokazuje wybrane wartosci. send arg - wysyla na komputer znaki specjalne. set arg wart - ustawia zmienne telnet'u. 3. WWW (W3) czyli World-Wide-Web, jest usluga internetowa, oparta na hipertekscie, a dokladnie na protokole http (HyperText Transfer Protokol). Dokumenty polaczone sa miedzy soba poprzez wyselekcjonowane zwroty, np. ICM, kilikajac na ICM, przeniesiemy sie do dokumentu na stronie www.icm.edu.pl! Do porusznia sie po swiecie WWW uzywamy browserow. Najbardziej znane to: Lynx - klient textowy (Unix) Netscape - klient graficzny (DOS, Unix, Windows'95, Windows'NT) Explorer - klient graficzny (DOS, Windows'95, Windows'NT) 4. Gopher to program nawigacyjny do przegladanie dystrybuowanych elektronicznie dokumentow. Laczy w sobie cechu indeksowanej bazy danych i elektronicznego serwisu informatycznego. Protokol i oprogramowanie Gophera jest typu klient-serwer. Do informacji mamy dostep na dwa sposoby: - browsing, polega na przegladaniu kolejnych poziomow katalogu. - searching, umozliwia szybki dostep. Obiektem dla Gophera moze byc: - katalog - plik tekstowy (niektore programy moga odbierac pliki dzwiekowe i grafike) - indeks adresowy - program wyszukujacy - wejscie do sesji telnetowej z innym systemem informacyjnym Sesje zaczynamy: $ telnet hum.amu.edu.pl [port] login: gopher [port] lub $ gopher hum.amu.edu.pl [port] 5. Veronica to skrot od (very easy rodent-oriented net-wide index to computerized archives) i jest systemem wyszukiwania obiektow i otrzymywania list tytulow serwisu Gopher. Polaczenia z serwisem Veronica sa udostepniane w wiekszosci serwerow Gophera. Veronica spelnia dwie funkcje: - Zbiera dane - Oferuje poszukiwanie bazy klienta Gophera. 6. Wais (Wide Area Information Serwer) jest systemem informacyjnym rozpowszechniania, wyszukiwania i odbierania danych. Polaczenie: $ telnet sunsite.unc.edu [port] login: swais [port] lub $ gopher sunsite.unc.edu 70 7. Archie jest systemem informacyjnym pozwalajacym znalesc informacje w InterNet'cie (szybkie przegladanie). Polacznie: $ telnet archie.icm.edu.pl login: archie Komendy i parametry: exit, quit, bye - Zakonczenie sesji. help [kom] - pomoc list [wzorzec] - okresla liste sitow opisanych w bazie danych np: list \.pl$ - wyswietla wszyskie polskie site'y! site [gdzie] - wyswietla katalogi i pliki w [gdzie]. whatis [znaki] - szuka lancuchu znakow. prog znaki | wzorzec find znaki | wzorzec - odnajduje pliki i katalogi, oraz ich adresy. mail [adres] - przesyla wynik sesji na [adres]. show [zmienna] - wyswietla wartosci zmiennych. set zmienna wartosc - ustawia zmeinna. term term [w] [k] - informuje serwer o danym terminalu np. set term xterm 24 100 . - oznacza jeden dowlony znak. ^ - musi sie zaczynac od ciagu znakow. $ - musi sie konczyc od ciagu znakow. 8. E-mail - Poczta sieciowa! Wysylanie poczty: $ mail -v -s "Temat:" kogos@adres To jest tekst poczty. To jest tekst poczty. lub (. i Enter). czytanie poczty: $ mail Po wiecej informacji otrzymasz po napisaniu: $ man mail 9. Newsy innaczej NetNews, Usenet to system pozwalajacy wymieniac artykuly.