Kratki brzi UNIX kurs: 1. Particionisanje: Svaki operativni sistem mora da se podigne sa necega. U slucaju UNIX-a i UNIX servera to je najcesce hard disk. Shema particionisanja hard diska pod windowsima je sledeca: +------------------------------+ | disk1 | | [primarna particija C: ] | | +--------------------------+ | | | extended particija | | | | [particija D: | | | | [particija E: | | | | .. | | | | [particija Z: | | | +--------------------------+ | +------------------------------+ Iz prilozenog se vidi da na hard disku u okviru extended particije mozemo imati vise manjih particija. DOS shema particionisanja podrazumeva postojanje max. 4 primarne particija ili 3 primarne i jedne extended particije. Linux je moguce instalirati bilo na primarnu bilo na neku extended particiju. U slucaju da na disku imamo npr. 3 primarne i jednu extended particiju na IDE disku prethodna shema bi mogla da izgleda ovako: +------------------------------+ | disk1 (/dev/hda) | | [/dev/hda1 -- C: pod wind.] | | +--------------------------+ | | | /dev/hda2 -- extended | | | | [/dev/hda5] -- D: pod win| | | | [/dev/hda6] -- E: pod win| | | +--------------------------+ | | [/dev/hda3] -- druga primarna| | [/dev/hda4] -- treca primarna| +------------------------------+ Iz prethodne slike moze da se zakljuci da primarne/extended particija uvek imaju broj od 1-4 dok particije unutar extended imaju broj od 5-6. Linux dozvoljava instalaciju na particije unutar extended particije. FreeBSD i Solaris na PC arhitekturi traze uvek _primarnu_ particiju unutar koje prave tzv. sliceve tj. svoje particije. Npr.: +------------------------------+ | disk1 | | [ primarna particija ] | | [primarna FreeBSD particija] | | +--------------------------+ | | | extended partcija | | | | [ D: ]| | | | [ Linux swap particija ]| | | | [ Linux / particija ]| | | | [ Linux /home ]| | | +--------------------------+ | | [Solaris particija ] | +------------------------------+ U ovom scenariju na disku se nalaze cak cetiri operativna sistema: Na C particiji su windowsi, koji se nalaze i na D: particiji. Linux je instaliran na particijama unutar extended particije (Linux / bi bio /dev/hda6, /home /dev/hda7), dok su FreeBSD odnosno Solaris instalirani na 2 i 4 particiji. Unutar ovih particija FreeBSD bi kreirao dva slice-a (ako je po sredi IDE disk onda bi oznaka bila /dev/ad0s2b za swap i /dev/ad0s2a za /. Pri instalaciji treba biti obazriv da li zelimo da pored jednog operativnog sistema imamo i drugi. Odluku o podizanju nekog operatvinog sistema donosi boot manager. U slucaju Linuxa to je Grub ili Lilo. U slucaju FreeBSD to je BTX. NT ima svoj loader. Napomena: Razliciti operativni sistemi razlicito oznacavaju particije: +------------------------------+ | [primarna ] | | [primarna FreeBSD] | | +--------------------------+ | | | extended | | | | [ D: ]| | | | [ E: ]| | | +--------------------------+ | +------------------------------+ FreeBSD uvek mora da se instalira na primarnu particiju kao i Solaris. Unutar primarne paricije u toku instalacije se naprave particije koje se na fbsd-u oznacavaju /dev/ad0s1a /dev/ad0s1b /dev/ad0s1c itd.. FreeBSD bi prvoj primarnoj particiji pristupao kroz /dev/ad0s1 dok bi Windozi ovu particiju oznacavali sa C:. Fbsd bi D: particiju video kao /dev/ad0s5 E: kao /dev/ad0s6 dok bi Linux pristupao preko /dev/hda5 /dev/hda6. Osnovne komande: Da bi mogli da radite na UNIX-u treba prvo da se prijavite na sistem. Skoro svaki UNIX ce Vas u slucaju logovanja (prijavljivanja na sistem) na konzoli docekati porukom: login: Ovde se ocekuje da unesete username/password. Administrator se pod UNIX-om zove root. Ovaj nalog ne mora biti jedini s administrativnim privilegijama. Uid 0 je taj koji daje sva prava na sistemu. Kada ukucate username/password sistem je spreman da prihvati komande. Ovakav nacin rada se zove CLI - tj. command line interface. Posle svake otkucane naredbe potrebno je stisnuti taster enter. Npr. Kada ukucate vas username (pa enter) pa password (pa enter) bicete docekani (ako je par username/password validan) command promptom: unix~$ ili slicno. Kada otkucate (id u produzetku pa stisnete enter) rezultat je sledeci: unix~$ id uid=500(korisnik) gid=10(korisnik) groups=0(root) unix~$ Tj. dobijate vas user id, vas group id i grupe kojima pripadate. Sledece komande se mogu smatrati osnovnim komandama. Uz svaku komandu dat je i primer: 0. passwd Ovom komadnom se menja password. Administrator moze kao argument da zada passwd username i da bilo kom korisniku na sistemu promeni password. Primer: unix~$ passwd Old password: New password: Re-enter new password: unix~$ 1. ls Vraca sadrzaj direktorijuma (iza svakog primera se ocekuje da je stisnut enter posle kucanja naredbe). Primer 1: (bez argumenata vraca sadrzaj tekuceg direktorijuma) unix~$ ls 1 MStmpinstall.96900 dhcpd.pl.old lost+found proba.1~ unix~$ Primer 2: unix~$ ls -al drwxrwxrwt 10 root wheel 1536 Apr 9 23:09 . drwxr-xr-x 23 root wheel 1024 Apr 3 18:17 .. drwxrwxrwt 2 root wheel 512 Apr 5 01:10 .X11-unix drwxrwxr-x 2 root operator 512 Mar 1 14:34 .snap -rw-r--r-- 1 root wheel 1453 Apr 8 14:22 1 drwx------ 2 root wheel 512 Dec 27 19:55 MStmpinstall.96900 -rwxr-xr-x 1 nobody wheel 2807 Dec 9 12:03 dhcpd.pl.old drwx------ 2 root wheel 2048 Jan 26 22:19 lost+found -rw-r--r-- 1 root wheel 1713 Jan 28 21:43 proba.1~ unix~$ Primer 3: unix~$ ls -al /home drwxr-xr-x 19 popa3d wheel 512 Mar 30 19:54 . drwxr-xr-x 23 root wheel 1024 Apr 3 18:17 .. drwxrwx--- 2 root operator 512 Mar 1 12:19 .snap drwxr-xr-x 7 root wheel 512 Dec 28 15:41 CHROOT drwx------ 2 6 wheel 182272 Mar 25 22:30 lost+found drwxr-xr-x 39 root wheel 6144 Jan 9 22:47 root.old unix~$ 2. cd Postavlja korisnika u zeljeni direktorijum: Primer 1: (postavlja nas u /tmp direktorijum) unix~$ cd /tmp unix~$ Primer 2: (postavlja nas u home direktorijum - tj. direktorijum u kome se nalazimo po prijavljivanju na sistem): unix~$ cd ~ unix~$ 3. mkdir Kreira direktorijum (folder): Primer 1: unix~$ cd ~ unix~$ mkdir aaa unix~$ ls -al aaa total 8 drwxr-xr-x 2 user grupa 4096 Apr 17 01:43 . drwx--x--x 32 user grupa 4096 Apr 17 01:43 .. unix~$ 4. rm Brise fajl ili direktorijum: Primer 1: unix~$ ls -ald aaa drwxr-xr-x 2 user grupa 4096 Apr 17 01:43 aaa unix~$ rm -rf aaa unix~$ ako posle ovoga uradimo: unix~$ ls -al aaa /bin/ls: aaa: No such file or directory unix~$ Primer 2: unix~$ mkdir aaa unix~$ rm -ri aaa rm: `remove directory aaa'? (ako otkucamo y ili n) u zavisnosti od toga ce biti preduzeta akcija 5. echo Ispisuje zadati argument na ekranu. Primer 1: unix~$ echo 111 111 unix~$ Primer 2: unix~$ echo 111 > /tmp/1 unix~$ vrednost 111 upisuje u fajl /tmp/1 6. cat Cat je skraceno od concatenate ali ima vise primena. Primer 1: unix~$ cat /etc/fstab /dev/hda2 / ext3 defaults 1 1 /dev/hda3 /home xfs defaults 1 2 /dev/hda1 swap swap pri=42 0 0 devpts /dev/pts devpts mode=0620,gid=5 0 0 proc /proc proc defaults 0 0 usbdevfs /proc/bus/usb usbdevfs noauto 0 0 /dev/cdrecorder /media/cdrecorder auto ro,noauto,user,exec 0 0 /dev/cdrom /media/cdrom auto ro,noauto,user,exec 0 0 /dev/fd0 /media/floppy auto noauto,user,sync 0 0 /dev/hdf1 /backup1 xfs defaults 1 1 /dev/hdb1 /backup2 xfs defaults 1 1 /dev/hde1 /backup3 xfs defaults 1 1 Stampa na ekranu sadrzaj fajla /etc/fstab Primer 2: unix~$ cat /etc/fstab > /tmp/1 unix~$ Fajl /etc/fstab stampa ali izlaz preusmerava u fajl /tmp/1 Primer 3: unix~$ cat /etc/fstab /etc/mtab > /tmp/1 unix~$ Stampa sadrzaj fajlova /etc/fstab i /etc/mtab ali izlaz svega toga preusmerava u fajl /tmp/1 Primer 4: unix~$ cat > /tmp/2 abcd (pa stisnemo ctrl+d istovremeno) unix~$ cat /tmp/2 abcd unix~$ Na ovaj nacin ono sto smo otkucali na ekranu zavrsilo je u fajlu /tmp/2 Primer 5: unix~$ cat >> /tmp/2 aaaa (ctrl+d) unix~$ cat /tmp/2 abcd aaaa unix~$ Fajlu /tmp/2 dodata je jos jedna linija aaaa. 7. tail Ispisuje kraj fajla Primer 1: unix~$ tail /etc/passwd at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash sshd:x:71:65:SSH daemon:/var/lib/sshd:/bin/false gdm:x:50:15:Gnome Display Manager daemon:/var/lib/gdm:/bin/bash radiusd:x:100:101:Radius daemon:/var/lib/radiusd:/bin/false irc:x:39:65534:IRC daemon:/usr/lib/ircd:/bin/bash ldap:x:76:70:User for OpenLDAP:/var/lib/ldap:/bin/bash privoxy:x:101:102:Daemon user for privoxy:/var/lib/privoxy:/bin/false pop:x:67:100:POP admin:/var/lib/pop:/bin/false quagga:x:102:103:Quagga routing daemon:/var/run/quagga:/bin/false squid:x:31:65534:WWW-proxy squid:/var/cache/squid:/bin/false unix~$ Primer 2: unix~$ tail -15 /etc/passwd man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash news:x:9:13:News system:/etc/news:/bin/bash uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash ntp:x:74:65534:NTP daemon:/var/lib/ntp:/bin/false named:x:44:44:Name server daemon:/var/lib/named:/bin/false at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash sshd:x:71:65:SSH daemon:/var/lib/sshd:/bin/false gdm:x:50:15:Gnome Display Manager daemon:/var/lib/gdm:/bin/bash radiusd:x:100:101:Radius daemon:/var/lib/radiusd:/bin/false irc:x:39:65534:IRC daemon:/usr/lib/ircd:/bin/bash ldap:x:76:70:User for OpenLDAP:/var/lib/ldap:/bin/bash privoxy:x:101:102:Daemon user for privoxy:/var/lib/privoxy:/bin/false pop:x:67:100:POP admin:/var/lib/pop:/bin/false quagga:x:102:103:Quagga routing daemon:/var/run/quagga:/bin/false squid:x:31:65534:WWW-proxy squid:/var/cache/squid:/bin/false unix~$ Ispisuje poslednjih 15 linija fajla /etc/passwd Primer 3: tail~$ tail -f /var/log/messages Ispisuje kraj fajla ali prati izmene istog 8. head Suprotno od tail - ispisuje pocetak fajla. Primer 1: unix~$ head /etc/passwd 9. more Radi kao filter izlaza i dozvoljava scroll texta preko ekrana posle space-a. Primer 1. unix~$ more /etc/passwd Primer 2. unix~$ cat /var/log/messages | more 10. less Suprotno od more. Za razliku od more dozvoljava upotrebu kursor tastera i setanje kroz text gore-dole. Primer 1. unix~$ less /etc/passwd 11. grep Trazi odredjeni uzorak texta u fajlu. Primer 1: unix~$ grep root /etc/passwd root:x:0:0:root:/root:/bin/bash unix~$ Primer 2: unix~$ grep -i root /var/log/messages Ispisuje svaku liniju iz fajla /var/log/messages koja sadrzi rec root bilo velikim bilo malim slovima. Primer 3: unix~$ grep -l -i root /var/log/* Vraca imena fajlova u direktorijumu /var/log koja u sebi sadrze rec root nezavisno da li rec root sadrzi mala ili velika slova. 12. cut Sece odredjeno polje iz fajla Primer 1: cat /etc/passwd | cut -f 1 -d: U ovom primeru izlaz komande cat preusmeren je na komandu cut. Potom komandom cut biramo polje 1 a kao marker koristimo : 13. wc Word count. Broji linije reci i bajtove u fajlu. Primer 1: unix~$ wc /etc/passwd 26 57 1345 /etc/passwd unix~$ 14. cp Kopira fajl/direktorijum: Primer 1: unix~$ cp /etc/fstab /tmp/fstab unix~$ Primer 2: unix~$ cp -pR /bin /tmp/bin Kopira direktorijum /bin u /tmp/bin Primer 3: unix~$ cp -pR /bin/ /tmp/ Kopira fajlove iz direktorijuma bin u direktorijum /tmp (obratiti paznju da na kraju imena direktorijuma ne stoji / ako se zeli kopiranje samog direktorijuma a ne fajlova/pod direktorijuma koji su u istom). 15. ln Postavlja simbolicki, hard link. Primer 1: unix~$ ln -s / root_dir Na ovaj nacin u tekucem direktorijumu postavljamo simbolicki link na / direktorijum i taj link se zove root_dir. Nakon toga cd root_dir postavlja u / direktorijum. 16. mv Radi move tj. rename fajla ili direktorijuma Primer: unix~$ mv /tmp/aaa /tmp/aaa1 Reimenuje /tmp/aaa u /tmp/aaa1 17. chmod Postavlja odgovarajuce dozvole na fajl: Ako uradimo: unix~$ ls -ald / drwxr-xr-x 22 root root 4096 Apr 17 2005 / Prvo slovo oznacava o kom tipu fajla se radi. Ovde moze pisati - (obican fajl) d (direktorijum) b (block device) c (character device). Nakon toga slede tri grupe rwx rwx i rwx. Prva grupa rwx se odnosi na vlasnika fajla, druga grupa rwx se odnosi na grupu i trece rwx se odnosi na ceo svet, tj. na sve koji mogu da budu na sistemu. r ima vrednost 4, w ima vrednost 2, a x ima vrednost 1. Primer 1: unix~$ mkdir /tmp/abcd unix~$ ls -ald /tmp/abcd drwxr-xr-x 2 user grupa 4096 Apr 17 14:37 /tmp/abcd unix~$ chmod 700 /tmp/abcd unix~$ ls -ald /tmp/abcd drwx------ 2 user grupa 4096 Apr 17 14:37 /tmp/abcd unix~$ Primer 2: unix~$ chmod 711 /tmp/abcd unix~$ ls -ald /tmp/abcd drwx--x--x 2 user grupa 4096 Apr 17 14:37 /tmp/abcd unix~$ x na direktorijumu nema znacaj sem sto daje mogucnost da bilo ko, ko ima prava pristupa ovom direktorijumu uradi cd /tmp/abcd ali nema prava i da radi ls unutar ovog direktorijuma. Ocigledno je da chmod 711 na fajl daje sva prava vlasniku, a grupi kojoj fajl pripada i celom svetu daje pravo samo da izvrse fajl. Posebna dva flag-a koja jos mogu da se setuju komandom chmod su s i t. chmod 4711 daje tzv. setuid flag. Npr. ls -ald /usr/bin/passwd vraca -rwsr-xr-x 1 root shadow 66040 Mar 19 22:13 /usr/bin/passwd. Pri izvrsenju fajla koji ima setuid flag onaj ko ga izvrsava dobije privilegije vlasnika. U slucaju promene password-a jasno je da svaki korisnik u trenutnu izvrsenja ove komande dobije privilegije administratora. chmod 6711 npr. daje privilegije vlasnika i privilegije grupe, dok chmod 2711 na fajl kod svakoga ko ga izvrsi privremeno onome ko ga izvrsava daje privilegije grupe. Setuid i setgid flag su jako opasni. chmod 1777 daje privilegije da u direktorijumu u kome svi imaju pravo upisa samo vlasnik fajlova/direktorijuma u tom direktorijumu moze da modifikuje svoje fajlove (ovo se ne odnosi na administratora sistema koji ima prava bez obzira na chmod). Primer 3: unix~$ ls -ald /tmp drwxrwxrwt 34 root root 8192 Apr 17 14:37 /tmp 18. su - Switch user - prelazi s jednog usera na drugog. Primer 1: unix~$ /usr/bin/su - Password: unix~# Bez ikakvih argumenata podrazumeva se da se radi switch user na administratora sistema (tj. root-a). Primer 2: unix~$ /usr/bin/su - user4 Password: unix~$ Napomena: komandom id uvek mozemo utvrditi identitet tj. pod kojim userom radimo! 19. chown/chgrp Menja vlasnistvo nad fajlom: Primer 1: unix~# ls -ald /tmp drwxrwxrwt 34 root root 8192 Apr 17 14:37 /tmp unix~# chown user /tmp unix~# ls -ald /tmp drwxrwxrwt 34 user root 8192 Apr 17 14:37 /tmp unix~# chown root /tmp 20. mount Dodeljuje sadrzaj particije direktorijumu. Primer 1: unix~$ mount /dev/aacd0s1a on / (ufs, local, soft-updates) devfs on /dev (devfs, local) /dev/aacd0s1g on /home (ufs, local, soft-updates) /dev/aacd0s1f on /tmp (ufs, local, soft-updates) /dev/aacd0s1d on /usr (ufs, local, soft-updates) /dev/aacd0s1e on /var (ufs, local, soft-updates) bez ikakvih argumenata pokazuje koja particija je i s kojim opcijama dodeljena kom direktorijumu Primer 2: unix~$ mount /dev/fd0 /mnt mount: only root can do that U ovom slucaju pokusano je izvrsavanje privilegovane komande od strane neprivilegovanog usera - tj. usera bez administrativnih privilegija. Primer 3: unix~# mount /dev/hdc /cdrom unix~# Sadrzaj particije hdc (u ovom slucaju celog uredjaja) je dodeljen paritciji /cdrom Primer 4: unix~# mount /dev/acd0 /cdrom unix~# Primer 5: unix~# mount /floppy Napomena: u ovom slucaju u fajlu /etc/fstab /floppy-u je vec dodeljen uredjaj pa nije potrebno navoditi uredjaj - mount point. Opsta sintaksa za mount je: mount uredjaj mount_point (dir ispod koga se dodeljuje sadrzaj uredjaja/particije) Primer 6: unix~# mount -t msdosfs /dev/acd3s1 /mnt unix~# Na ovaj nacin navodi se tip fajl sistema 21. umount Vrsi "demontrianje" tj. otkacinjanje uredjaja od direktorijuma: Primer 1: unix~# umount -f /tmp Nasilno vrsi demontazu direktorijuma Primer 2: unix~# umount /dev/acd0 Vrsi demontiranje /dev/acd0. 22. df Pokazuje stanje particija zauzeto/slobodno: Primer 1: unix~$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda2 20641788 12520524 7072624 64% / /dev/hda3 98759536 97121212 1638324 99% /home /dev/hdf1 120002212 119772452 229760 100% /backup1 /dev/hdb1 119995096 112027112 7967984 94% /backup2 /dev/hde1 119995096 119409080 586016 100% /backup3 tmpfs 257012 0 257012 0% /dev/shm unix~$ Primer 2: unix~$ df Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/aacd0s1a 3045006 1608640 1192766 57% / devfs 1 1 0 100% /dev /dev/aacd0s1g 118355986 53157746 55729762 49% /home /dev/aacd0s1f 1012974 44648 887290 5% /tmp /dev/aacd0s1d 3045006 1495084 1306322 53% /usr /dev/aacd0s1e 3045006 166742 2634664 6% /var Primer 3: unix~$ df -h Filesystem Size Used Avail Capacity Mounted on /dev/aacd0s1a 2.9G 1.5G 1.1G 57% / devfs 1.0K 1.0K 0B 100% /dev /dev/aacd0s1g 113G 51G 53G 49% /home /dev/aacd0s1f 989M 44M 866M 5% /tmp /dev/aacd0s1d 2.9G 1.4G 1.2G 53% /usr /dev/aacd0s1e 2.9G 163M 2.5G 6% /var Primer 4: unix~$ df -i Filesystem 1K-blocks Used Avail Capacity iused ifree %iused Mounted on /dev/aacd0s1a 3045006 1608642 1192764 57% 66684 333698 17% / devfs 1 1 0 100% 0 0 100% /dev /dev/aacd0s1g 118355986 53157780 55729728 49% 170947 15137851 1% /home /dev/aacd0s1f 1012974 44648 887290 5% 279 141031 0% /tmp /dev/aacd0s1d 3045006 1495084 1306322 53% 161603 238779 40% /usr /dev/aacd0s1e 3045006 166742 2634664 6% 7024 393358 2% /var 23. du Pokazuje stanje zauzetosti direktorijuma. Primer 1: unix~# du -sk /* 6452 /bin 6376 /boot 3276 /dev 66664 /etc 13853344 /home 93908 /lib 124 /lost+found 20 /media 4 /mnt 1423332 /opt 262187 /proc 2954932 /root 16236 /sbin 2728 /srv 0 /sys 79708 /tmp 4141256 /usr 139156 /var 24. ps Pokazuje procese na sistemu: Primer 1: unix~# ps axuw Primer 2: unix~# ps ax Primer 3: unix~# ps axj (ili ps -edf na Linuxu) prikazuje proces ID i parent process ID (vazno!). 25. top Pokazuje zauzece procesora u obradi procesa Primer 1: unix~# top 26. kill/killall Ubija proces Primer 1: unix~# kill -9 12456 Ubija proces ciji je id 12456. PID procesa se dobija komandom ps axuw Primer 2: unix~# killall -9 tcsh Ubija sve procese koji se zovu tcsh 27. tar Skraceno od tape arhiver. Pravi tar arhivu. Primer 1: unix~# tar cvf /tmp/etc.tar /etc Sadrzaj direktorijuma /etc arhivira u fajl /tmp/etc.tar Primer 2: unix~# tar tvf /tmp/etc.tar Prikazuje sadraj arhive Primer 3: unix~# tar xvf /tmp/etc.tar Raspakuje arhivu etc.tar 28. gzip,bzip2 Komprimuju fajl. Komprimovan fajl na kraju ima .gz odnosno .bz2. Primer 1: unix~$ gzip -9 /tmp/etc.tar Komprimuje fajl /tmp/etc.tar Primer 2: unix~$ gzip -d /tmp/etc.tar.gz Vrsi dekompresiju fajla /tmp/etc.tar.gz Primer 3: unix~# tar cvf - /etc | gzip -9 > /tmp/etc.tar.gz Izlaz komande tar preusmerava na gzip a izlaz komande gzip u /tmp/etc.tar.gz Napomena: isto je moguce postici sa unix~# tar zcvf /tmp/etc.tar.gz /etc a raspkivanje tar.gz fajla je moguce postici sa tar zcvf, odnosno pregled se vrsi sa tar ztvf /tmp/etc.tar.gz Primer 4: unix~# cat /etc/passwd | gzip -9 > /tmp/passwd.gz Komprimuje fajl /etc/passwd i izlaz preusmerava u fajl /tmp/passwd.gz Primer 5: unix~# gzip -cd /tmp/passwd.gz Ispisuje /tmp/passwd.gz na izlazu bez dekomprimovanja istog. bzip2 ima visi stepen kompresije od gzip-a. 29. chroot Menja / direktorijum za odredjeni proces. chroot okruzenje mora da sadrzi minimalne funkcije da bi taj proces mogao da radi. Primer 1: unix~# chroot /CHROOT/APACHE /bin/sh Komandu /bin/sh izvrsava u chroot-ovanom okruzenju. Potrebno je da direktorijum /CHROOT/APACHE sadrzi minimalno okruzenje koje ce dozvoliti izvrsenje komande /bin/sh - to su /lib, /libexec i sama komanda /bin/sh 30. ifconfig Ispisuje mrezne interface. Primer 1: unix~# ifconfig -a lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Primer 2: unix~# ifconfig sk0 Prikazuje stanje interface-a sk0 Primer 3: unix~# ifconfig bge0 82.117.194.2 netmask 255.255.255.0 Dodeljuje ip adresu 82.117.194.2 interface-u bge0 31. netstat Prikazuje sadrzaj aktivnih konekcija i socketa. Primer 1: unix~# netstat -na Primer 2: unix~# netstat -r Ispisuje route 32. route Dodaju route tj. staticke route za odredjene mreze. Primer 1: unix~# route add default 192.168.1.1 Dodeljuje default gateway unix~# route add 192.168.1.0/24 192.168.1.1 Mrezu 192.168.1.0/24 rutira preko 192.168.1.1 33. sockstat/fstat Ispisuje stanje otvorenih socketa, odnosno otvorenih fajlova Na nekim Unix-ima postoji komanda fuser. Primer 1: unix~# fuser 25/tcp Prikazuje PID procesa koji slusa na portu 25 Primer 2: unix~# sockstat -l 34. ping Salje icmp zahteve ka destinaciji. Ako je destinacija ziva vracaju se icmp replay-i ako nije (ili ako je icmp saobracaj filtriran) ne vraca se nista. Primer 1: unix~$ ping 192.168.1.1 64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.127 ms Primer 2: unix~$ ping -s 1500 192.168.1.2 Salje icmp pakete velicine 1500 bajtova. Primer 3: unix~$ ping -l 10000 -s 1500 192.168.1.1 Preload-uje u buffer kartice 10000 paketa velicine 1500 bajtova i sve ih shalje istovremeno. 35. traceroute Pokazuje preko kojih HOP-ova se stize do odredjene destinacije: Primer: unix~$ traceroute www.google.com 36. ssh Secure shell. Koristi se za remote pristup serveru. Primer 1: unix~# ssh -l username ip_adresa_servera Ako je password pravilno unesen komande se dalje interaktivno izvrsavaju na samom serveru 37. ftp/sftp Ftp je skraceno od file transfer protokol. Problem sa ftp-om je sto username i password kroz mrezu salje u cistom text formatu sto sa stanovista bezbednosti nije dobro.Zato je sftp koji ovaj transfer obavlja preko ssh-a bezbedniji. Primer 1: unix~# sftp root@192.168.1.254 Password: sftp> Sa get ime_fajla se fajl skida sa servera na klijent masinu (tj. masinu s koje smo pristupili) Sa put ime_fajla se fajl salje (uploaduje) na server. put i get i mput su komande koje postoje na ftp klijentu. 38. /usr/sbin/inetd Na UNIX-u server procesi uvek imaju na kraju slovo d. Npr. ps axuw |grep ssh pokazuje: root 1747 3.0 0.7 4596 1948 ? Ss 10:38 0:00 /usr/sbin/sshd Ovo je server proces, tj. proces koji opsluzuje klijente koji ssh-om pristupaju serveru. Medjutim, servise je moguce kontrolisati kroz inetd, tj. proces koji kada se pokrene sam vrsi kontrolu drugih servisa. Njegov konfiguracioni fajl je /etc/inetd.conf. U inetd.conf svaka linija oznacava jedan servis. Ako se na pocetku nalazi # taj servis nije omogucen. Primer: #pop3 stream tcp nowait root /usr/local/libexec/popper popper U ovom slucaju pop3 servis (grep pop3 /etc/services pokazuje na kom portu treba da slusa) je onesposobljen. Skidanjem # i komandom killall -HUP inetd (ili killall -9 inetd; /usr/sbin/inetd) ovaj servis se osposobljava. Na identican nacin se vrsi iskljucivanje servisa: u fajlu se svaka linija koja pocinje sa # smtra komentarom - dakle bilo koji servis isped koga stoji # je onesposobljen. Servisi mogu da budu i stand-alone. Sshd (secure shell server) je primer stand alone servera - ali je i njega moguce pokretati kroz inetd. Mana pokretanja servisa kroz inetd je broj konekacija koje je na ovaj nacin moguce opsluziti. 39. man Ovo je najbitnija komanda. Za svaku komandu na UNIX-u postoji manual page koji detaljno objasnjava sve switcheve neke komande. Primer 1: unix~$ man man daje manual page za komandu man Primer 2: unix~$ man ls Ispisuje manual page za komandu ls 40. ldd Pokazuje koje biblioteke su neophodne za pokretanje odredjene komande: Primer 1: unix~$ ldd /bin/ls /bin/ls: libutil.so.4 => /lib/libutil.so.4 (0x800632000) libncurses.so.5 => /lib/libncurses.so.5 (0x80073f000) libc.so.5 => /lib/libc.so.5 (0x80089a000) 41. fsck Radi skeniranje tj. filesystem check. Neophodna u slucaju nasilnog iskljucenja sistema iz struje. 42. init Init je osnovni proces koji se pokrece posle boot-a sistema, tj. posle ucitavanja kernela. Ovaj proces je "roditeljski" proces svim ostalim procesima na sistemu i uvek ima PID 1. Preko njega se vrsi kontrola runlevela. Init po pokretanju cita /etc/inittab - na *BSD /etc/ttys i /etc/rc. Sa init 1 sistem se prebacuje u single user rezim. Primer 1: unix~# init 1 43. halt/reboot Zaustavlja sistem. 44. man hier Na freebsd-u ova komanda opisuje strukturu fajl sistema tj. sta je u kom direktorijumu u / (root - osnovnom direktorijumu). Neki od direktorijuma koje bih ovde pomenu i bez kojih ni jedan UNIX ne moze da radi su: /etc - direktorijum gde su konfiguracioni fajlovi /lib - osnovne biblioteke /libexec - linker direktorijum /bin - osnovne komande /sbin - osnovne komande namenjene administraciji sistema /dev - devices kroz koje procesi pristupaju uredjajima na hardverskom nivou. 45. telnet telnet je komanda kojom se kao i sa ssh prelazi sa jednog hosta na drugi. Kada unesete username i password prelazi se na interaktivno izvrsavanje komandi. Nedostatak ove komande je sto username i password kroz mrezu transportuje u clear text formatu. Primer 1: unix~$ telnet tesla.rcub.bg.ac.yu Trying 147.91.1.119... Connected to tesla.rcub.bg.ac.yu. Escape character is '^]'. -------------------- @@@@@@@ @@@ @@@ @@@@@ @@@@@ @@@@@@@@@@@@@ * Belgrade University @@@ @@@ @@@ @@@ @@@@@ @@@@@ @@@@@@@@@@@@@ ** Computing Center @@@ @@@ @@@ @@@ @@@@@ @@@@@ @@@@@ *** -------------------- @@@@@@@ @@@ @@@ @@@@@ @@@@@ @@@@@ ***** Belgrade 11000 @@@ @@@ @@@ @@@@@@@@@ @@@@@ **** Kumanovska bb @@@ @@@@@@@@@ @@@@@@@ @@@@@@@@@@@@ *** -------------------- @@@ @@@@@ @@@@@@@@@@@@@@ *** TESLA.RCUB.BG.AC.YU. @@@@@ @@@@@ @@@@@ *** IP: 147.91.1.119 @@@@@ @@@@@ @@@@@ *** ***************************************** @@@@@ @@@@@ @@@@@ **** ** Racunarski centar Univerziteta ** @@@@@ @@@@@@@@@@@@@@@@ ***** ** u Beogradu, tel:2434596 ** @@@@@ @@@@@@@@@@@@@@@ ****** ************************************************************************* Nova Tesla vam zeli dobrodoslicu. Prijatan rad ... login: Primer 2: unix~$ telnet www.google.com 80 Trying 216.239.59.99... Connected to www.yahoo.com. Escape character is '^]'. Ako sada otkucamo GET / dobijamo html stranicu - ovo je identicno onome sto rade web browseri. 46. nslookup/dig Ove dve komande su identicne, rade pretvaranje imena u broj i obrnuto: Primer 1: unix~$ dig @147.91.8.6 www.google.com ; <<>> DiG 9.2.2 <<>> @147.91.8.6 www.google.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7725 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 5, ADDITIONAL: 5 ;; QUESTION SECTION: ;www.google.com. IN A ;; ANSWER SECTION: www.google.com. 167 IN CNAME www.l.google.com. www.l.google.com. 286 IN A 216.239.59.147 www.l.google.com. 286 IN A 216.239.59.104 www.l.google.com. 286 IN A 216.239.59.99 ;; AUTHORITY SECTION: l.google.com. 62693 IN NS a.l.google.com. l.google.com. 62693 IN NS b.l.google.com. l.google.com. 62693 IN NS c.l.google.com. l.google.com. 62693 IN NS d.l.google.com. l.google.com. 62693 IN NS e.l.google.com. ;; ADDITIONAL SECTION: a.l.google.com. 83076 IN A 216.239.53.9 b.l.google.com. 34750 IN A 64.233.179.9 c.l.google.com. 30723 IN A 64.233.161.9 d.l.google.com. 30723 IN A 64.233.183.9 e.l.google.com. 62693 IN A 66.102.11.9 ;; Query time: 243 msec ;; SERVER: 147.91.8.6#53(147.91.8.6) ;; WHEN: Wed Apr 20 13:26:16 2005 ;; MSG SIZE rcvd: 260 Prvi argument je name server na kome radimo query (@147.91.8.6) drugi argument je host koji nas zanima (www.google.com). Primer 2: unix~$ nslookup www.google.com Primer 3: unix~$ nslookup Note: nslookup is deprecated and may be removed from future releases. Consider using the `Dig' or `Host' programs instead. Run nslookup with the -sil[ent]' option to prevent this message from appearing. > www.google.com Server: 82.117.194.2 Address: 82.117.194.2#53 Non-authoritative answer: www.google.com canonical name = www.l.google.com. Name: www.l.google.com Address: 216.239.59.147 Name: www.l.google.com Address: 216.239.59.99 Name: www.l.google.com Address: 216.239.59.104 > server 147.91.8.6 Default server: 147.91.8.6 Address: 147.91.8.6#53 > Po pokretanju komande nslookup dobijamo upozorenje da je zastarela. Potom sledi upit (www.google.com). Nakon ovoga komandom server dodeljujemo ip adresu servera na kome radimo upit. 47. w Ova komanda ispisuje ko je ulogovan na sistem i sta radi: Primer 1: unix~$ w 13:40:58 up 1 day, 17:31, 7 users, load average: 0.21, 0.24, 0.09 USER TTY LOGIN@ IDLE JCPU PCPU WHAT root tty1 12:20 0.00s 0.18s 0.00s w root tty2 13:35 2.00s 1.00s 0.95s ssh 192.168.1.4 root tty3 Tue11 7:45 0.33s 0.23s lynx http://www.google.com unix~$ Za dalje informacije konsultovati man. Neke od komandi koje ovde nisu pomenute a korisne su: dd, pwd_mkdb, sort, awk, rpm, pkg_add, mknod, cal, bc,w,uname, uptime, lynx, links. Procitati manual page za sve pomenute komande kao i za sve pronadjene komande u direktorijumima /usr/bin, /usr/sbin, /bin i /sbin. Obicno i /usr/share poddirektorijum doc i faq sadrzi korisne informacije. NAPOMENA: NI ZA ZIVU GLAVU NE EXPERIMENTISATI NA SERVERIMA KOJI RADE I KOJI SU U POGONU. ZA POTREBE UCENJA INSTALACIJU IZVRSITI NA PRAZNOM RACUNARU I NA NJEMU EKSPERIMENTISATI. Dopuna A: Koriscenje vi editora. Iako na prvo pogledn nepristupacan ovaj edior se srece na svakoj distribuciji UNIX-a. Osnovne komande: unix~$ vi fajl prtisnuti taster i otkucati tekst stisnuti esc pa potom napisati :wq! na ovaj nacin kreiran je fajl sa nazivom fajl koji sadrzi tekst koji ste otkucali Ako ponovo kazete vi fajl pa potom otkucate :q! bez obzira da li ste izvrsili bilo kakve promene one nece biti snimljene U vi-u : pa potom broj vas postavljaju na liniju sa zeljenim brojem Pomocu tastera esc izlazite iz edit rezima i prelazite u komandni. U komandnom rezimu korisne su komande x (brise karakter na kome je kursor) i dd (brise ceo red). Pored vi-a na UNIX su cesto srecu joe i pico kao editori cija je upotreba nesto jednostavnija nego vi-a. Dopuna B: Kopiranje Pod UNIX-om je veoma prosto iskopirati sadrzaj uredjaja na uredjaj. Ako zakacite dva diska identicnog kapaciteta komanda: unix~# cat /dev/hda > /dev/hdc bukvalno vrsi kopiranje bajt po bajt, tj. ako oba diska imaju identicnu geometriju dobijate kopiju prvog diska sa sve particijama na drugi disk. unix~# cat /dev/hdc > /tmp/iso-image Pravi kopiju cd-a ako je /dev/hdc cdrom. Na BSD-u bi bilo: unix~# cat /dev/acd0 > /tmp/iso Komandom cdrecord ili cdburn ovaj image je moguce snimiti na prazan cd. (pogledati man za obe komande). Dopuna C: /etc/passwd U fajlu /etc/passwd UNIX definise usere. Format linije u /etc/passwd je: username:x:user id:group id:Ime i prezime (gecos field):home dir:shell user id 0 garantuje administrativne privilegije. home dir je direktorijum u kome se po interaktivnom prijavljivanju na sistem nalazimo (putem login-a s konzole ili preko ssh-a) ovaj direktorijum je taj u kome ce nas sistem smestiti. Shell je prva komanda tj. shell je proces koji nam daje prompt i koji je parent (tj. otac) proces svih komandi koje izvrsavamo (sto se sa ps axuw lepo vidi - obratiti paznju na PID i PPID). Kriptovani passwordi se na UNIX-u cuvaju u fajlu /etc/shadow odnosno /etc/master.password na BSD. Ovi fajlovi su txt fajlovi i moguce je rucno ih editovati. Ipak, na BSD-u je posle bilo kakve intervencije na ovaj nacin neophodno izvrsiti pwd_mkdb /etc/master.password kako bi bio updatovan i fajl /etc/pwd.db. Kojim grupama korisnik pripada definisano je u /etc/groups. Na nekim UNIX-ima samo korisnici grupe wheel imaju prava na su. Dopuna D: shell skripte Shell skripte predstavljaju vise komandi koje shell interaktivno izvrsava. Takodje postoji kontrola toka tj. uslovi if then: Primer shell skripte: #!/bin/sh if test $1 -lt 10 then echo $1 je manje od 10; fi if test $1 -gt 10 then echo $1 je vece od 10; fi if test $1 -eq 10 then echo $1 je tacno 10; fi Prva linija uvek govori koji interpreter se koristi: #!/bin/sh govori da je po sredi /bin/sh. Ovu skriptu napistai u tekst editoru. Zatim dati permission za izvrsavanje (chmod 755 skripta). I pokrenuti je sa razlicitim argumentima (manjim vecim i jednakim broju 10). Dopuna E: C kompajler Na skoro svakom UNIX-u postoji C kompajler. Koriscenje istog kao i alata za razvoj je prosto. Primer: unix~$ cat > program.c main() { printf("hello world\n"); } (ctrl-D ili kako se to jos oznacava ^D) unix~$ make program cc program.c -o program unix~$ ./program hello world unix~$ Za UNIX je karakteristicno da se dosta progarama moze naci u source obliku. Kompajliranje i instalacija istih se vrsi na sledeci nacin: unix~$ tar zxvf source.tar.gz unix~$ cd source unix~$ ./configure unix~$ make unix~$ /usr/bin/su - unix~# make install configure kreira Makefile koji sadrzi instrukcije za komandu make, a pri tome sam uradi provere. Sa configure se najcesce daje instukcija i gde se program sa pratecim bibliotekama instalira. Npr. ./configure --prefix=/usr/local